target 'YourAppName' do# Uncommment the next line if you're using Swift or would like to use dynamic frameworksuse_frameworks!use_modular_headers!# Pods for Examplepod 'TIMPush', '7.9.5668'end
pod install # 如果无法安装 TUIKit 最新版本,执行以下命令更新本地的 CocoaPods 仓库列表。 pod repo update
- offlinePushCertificateID
协议方法返回证书 ID 即可。#pragma mark - TIMPush- (int)offlinePushCertificateID {return kAPNSBusiId;}- (NSString *)applicationGroupID {return kTIMPushAppGorupKey;}- (void)navigateToBuiltInChatViewController:(NSString *)userID groupID:(NSString *)groupID {// custom navigate}
#import <TUICore/OfflinePushExtInfo.h>V2TIMOfflinePushInfo *pushInfo = [[V2TIMOfflinePushInfo alloc] init];pushInfo.title = @"推送标题";pushInfo.desc = @"推送内容";BOOL isGroup = groupID.length > 0;NSString *senderId = isGroup ? (groupID) : ([TUILogin getUserID]);NSString *nickName = isGroup ? (conversationData.title) : ([TUILogin getNickName] ?: [TUILogin getUserID]);OfflinePushExtInfo *extInfo = [[OfflinePushExtInfo alloc] init];OfflinePushExtBusinessInfo * entity = extInfo.entity;entity.action = 1;entity.content = @"推送内容";entity.sender = senderId;entity.nickname = nickName;entity.faceUrl = [TUILogin getFaceUrl] ?: @"";entity.chatType = [isGroup ? @(V2TIM_GROUP) : @(V2TIM_C2C) integerValue];entity.version = kOfflinePushVersion;pushInfo.ext = [extInfo toReportExtString];//以下是兼容安卓的字段,需要填写pushInfo.AndroidOPPOChannelID = @"tuikit";pushInfo.AndroidSound = TUIConfig.defaultConfig.enableCustomRing ? @"private_ring" : nil;pushInfo.AndroidHuaWeiCategory = @"IM";pushInfo.AndroidVIVOCategory = @"IM";
- onRemoteNotificationReceived
方法。#pragma mark - TIMPush- (BOOL)onRemoteNotificationReceived:(NSString *)notice {//- 如果返回 YES, TIMPush 将不在执行内置的 TUIKit 离线推送解析逻辑,完全交由您自行处理;//NSString *ext = notice;//OfflinePushExtInfo *info = [OfflinePushExtInfo createWithExtString:ext];//return YES;//- 如果返回 NO,TIMPush 将继续执行内置的 TUIKit 离线推送解析逻辑,继续回调 - navigateToBuiltInChatViewController:groupID: 方法。return NO;}
- navigateToBuiltInChatViewController
方法。#pragma mark - TIMPush- (void)navigateToBuiltInChatViewController:(NSString *)userID groupID:(NSString *)groupID {UITabBarController *tab = [self getMainController];if (![tab isKindOfClass: UITabBarController.class]) {// 正在登录中return;}if (tab.selectedIndex != 0) {[tab setSelectedIndex:0];}self.window.rootViewController = tab;UINavigationController *nav = (UINavigationController *)tab.selectedViewController;if (![nav isKindOfClass:UINavigationController.class]) {return;}UIViewController *vc = nav.viewControllers.firstObject;if (![vc isKindOfClass:NSClassFromString(@"ConversationController")]&& ![vc isKindOfClass:NSClassFromString(@"ConversationController_Minimalist")]) {return;}if ([vc respondsToSelector:NSSelectorFromString(@"pushToChatViewController:userID:")]) {[vc performSelector:NSSelectorFromString(@"pushToChatViewController:userID:") withObject:groupID withObject:userID];}}
- applicationGroupID
方法,返回 App Group ID (生成方式可参见 厂商配置-生成 App GroupID)。-didReceiveNotificationRequest:withContentHandler:
方法中调用推送抵达率统计函数:@implementation NotificationService- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {//appGroup 标识当前主 APP 和 Extension 之间共享的 APP Group,需要在主 APP 的 Capability 中配置 App Groups 能力。//格式为group + [主bundleID]+ key//如group.com.tencent.im.pushkeyNSString * appGroupID = kTIMPushAppGorupKey;__weak typeof(self) weakSelf = self;[TIMPush onReceiveNotificationRequest:request inAppGroupID:appGroupID callback:^(UNNotificationContent *content) {weakSelf.bestAttemptContent = [content mutableCopy];// Modify the notification content here...// self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];weakSelf.contentHandler(weakSelf.bestAttemptContent);}];}
本页内容是否解决了您的问题?