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 'TXIMSDK_Plus_iOS_XCFramework'pod 'TIMPush', 'VERSION'end
pod install # 如果无法安装 TUIKit 最新版本,执行以下命令更新本地的 CocoaPods 仓库列表。 pod repo update

- businessID 协议方法返回证书 ID 即可。#pragma mark - TIMPush- (int)businessID {//上一步控制台给的证书IDint kBusinessID = 0;return kBusinessID;}- (NSString *)applicationGroupID {//AppGroup IDreturn kTIMPushAppGroupKey;}- (BOOL)onRemoteNotificationReceived:(NSString *)notice {// custom navigatereturn NO;}
#pragma mark - TIMPush//Swift 务必携带 @objc 关键字@objc func businessID() -> Int32 {//上一步控制台给的证书IDreturn 0}@objc func applicationGroupID() -> String {//AppGroup IDreturn "group.com.yourcompony.pushkey"}@objc func onRemoteNotificationReceived(_ notice: String?) -> Bool {// custom navigatereturn false}
const int sdkAppId = 您的 sdkAppId;static const NSString *appKey = @"客户端密钥";[TIMPushManager registerPush:sdkAppId appKey:appKey succ:^(NSData * _Nonnull deviceToken) {} fail:^(int code, NSString * _Nonnull desc) {}];
let sdkAppId: Int = 0let appKey: String = "客户端密钥"TIMPushManager.registerPush(Int32(sdkAppId), appKey: appKey, succ: { deviceToken in// 成功回调处理}, fail: { code, desc in// 失败回调处理})
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[TIMPushManager addPushListener:self];return YES;}#pragma mark - TIMPushListener- (void)onNotificationClicked:(NSString *)ext {// 获取 ext 自定义跳转}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {// Override point for customization after application launch.TIMPushManager.addPushListener(listener: self)return true}@objc func onNotificationClicked(_ ext: String) {//Clicked}@objc func onRecvPushMessage(_ message: TIMPushMessage) {//onRecvPushMessage}@objc func onRevokePushMessage(_ messageID: String) {//onRevokePushMessage}
- 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;}
@objc func onRemoteNotificationReceived(_ notice: String) -> Bool {// - 如果返回 true, TIMPush 将不在执行内置的 TUIKit 离线推送解析逻辑,完全交由您自行处理;// let ext = notice// let info = OfflinePushExtInfo.create(withExtString: ext)// return true// - 如果返回 false,TIMPush 将继续执行内置的 TUIKit 离线推送解析逻辑,继续回调 - navigateToBuiltInChatViewController:groupID: 方法。return false}
- 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 = kTIMPushAppGroupKey;__weak typeof(self) weakSelf = self;[TIMPushManager handleNotificationServiceRequest:request appGroupID: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);}];}@end
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {self.contentHandler = contentHandlerbestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)//appGroup 标识当前主 APP 和 Extension 之间共享的 APP Group,需要在主 APP 的 Capability 中配置 App Groups 能力。//推荐格式为 group + [主bundleID]//如 group.com.主bundleID.pushkeyTIMPushManager.handleNotificationServiceRequest(request: request, appGroupID: "appGroupID") {[weak self] content inif let bestAttemptContent = self?.bestAttemptContent {// Modify the notification content here...bestAttemptContent.title = "\\(bestAttemptContent.title) [modified]"contentHandler(bestAttemptContent)}}}

文档反馈