iOS

最近更新时间:2026-06-22 11:47:12

我的收藏
本文介绍 TIMPush iOS SDK 的客户端 API,包括 TIMPushManagerTIMPushListenerTIMPushDelegateTIMPushMessage、回调类型和错误码。

API 概览

TIMPushManager

TIMPushManager 是 TIMPush iOS SDK 的推送服务管理类,用于注册推送服务、管理 RegistrationID、配置前台通知展示、添加监听器,以及在 Notification Service Extension 中统计推送抵达。
API
说明
注册推送服务。
反注册推送服务。
获取当前推送注册标识。
设置自定义推送注册标识。
设置 App 前台收到推送时是否展示通知。
添加 Push 监听器。
移除 Push 监听器。
在 Notification Service Extension 中处理推送请求,用于统计推送抵达。

TIMPushListener

TIMPushListener 是 Push 事件监听协议。实现该协议后,可以接收推送消息、推送撤回和通知点击事件。协议未标注 @optional,实现时需同时实现全部三个方法。
API
说明
收到 Push 消息。
收到 Push 消息撤回通知。
收到通知栏消息点击回调。

TIMPushDelegate

TIMPushDelegate 是离线推送证书配置与点击事件处理协议。该协议继承自 UIApplicationDelegate,所有方法均为可选方法。
API
说明
返回离线推送证书 ID。
返回主 App 与 Notification Service Extension 共享的 App Group ID。
自定义处理收到的远程推送。
处理通知点击后的页面跳转。

回调类型

TIMPushCallback

不携带返回值的通用成功回调。

声明

typedef void(^TIMPushCallback)(void);

TIMPushValueCallback

携带字符串返回值的回调。

声明

typedef void(^TIMPushValueCallback)(NSString *value);

参数

参数
类型
说明
value
NSString *
回调返回的字符串值。

TIMPushSuccessCallback

注册推送服务成功时触发的回调。

声明

typedef void(^TIMPushSuccessCallback)(NSData *deviceToken);

参数

参数
类型
说明
deviceToken
NSData *
APNs 返回的设备令牌。

TIMPushFailedCallback

接口调用失败时触发的回调。

声明

typedef void(^TIMPushFailedCallback)(int code, NSString *desc);

参数

参数
类型
说明
code
int
错误码。
desc
NSString *
错误描述。

TIMPushCallExperimentalAPISucc

实验性 API 调用成功时触发的回调。

声明

typedef void(^TIMPushCallExperimentalAPISucc)(NSObject *object);

参数

参数
类型
说明
object
NSObject *
实验性 API 返回的数据对象。具体类型由 API 定义决定。

TIMPushNotificationExtensionCallback

Notification Service Extension 处理推送请求后触发的回调。

声明

typedef void(^TIMPushNotificationExtensionCallback)(UNNotificationContent *content);

参数

参数
类型
说明
content
UNNotificationContent *
处理后的通知内容。

可用性

iOS 10.0 及以上版本可用。

TIMPushManager

registerPush:appKey:succ:fail:

注册 TIMPush 推送服务。

声明

+ (void)registerPush:(int)sdkAppId
appKey:(NSString *)appKey
succ:(TIMPushSuccessCallback)successCallback
fail:(TIMPushFailedCallback)failedCallback;

参数

参数
类型
说明
sdkAppId
int
应用的 SDKAppID。
appKey
NSString *
控制台分配的 Push Key。独立 Push 场景需传入该参数;已集成 IM 或 TUIKit 产品时,请在登录成功回调中调用本接口,并将该参数设置为 nil。Chat Key 仅用于 Chat 登录,不要作为 appKey 传入。
successCallback
TIMPushSuccessCallback
注册成功回调。回调携带 APNs 返回的 deviceToken
failedCallback
TIMPushFailedCallback
注册失败回调。回调携带错误码和错误描述。

说明

调用该接口前,请确保用户已同意 App 的隐私政策,并已获得通知授权。注册成功后,SDK 会建立当前设备与推送服务之间的绑定关系。
如果需要自定义 RegistrationID,请先调用 setRegistrationID:callback:,再调用本接口注册推送服务。

可用性

该接口不支持在 App Extension 中调用。

unRegisterPush:fail:

反注册推送服务。

声明

+ (void)unRegisterPush:(TIMPushCallback)successCallback
fail:(TIMPushFailedCallback)failedCallback;

参数

参数
类型
说明
successCallback
TIMPushCallback
反注册成功回调。
failedCallback
TIMPushFailedCallback
反注册失败回调。回调携带错误码和错误描述。

说明

用户退出登录时,可以调用该接口关闭当前用户或当前设备的推送服务。
如果您使用 TUILogin 提供的 loginlogout 能力,无需额外调用该接口。

可用性

该接口不支持在 App Extension 中调用。

getRegistrationID:

获取当前推送注册标识。

声明

+ (void)getRegistrationID:(TIMPushValueCallback)callback;

参数

参数
类型
说明
callback
TIMPushValueCallback
获取成功回调。回调返回当前推送标识。

说明

回调返回值取决于接入场景:
独立 Push 场景:返回 SDK 生成的 registrationID(设备标识),卸载重装后可能变化。
Chat / TUIKit 场景:返回当前 Chat 登录的 userID
请在 registerPush:appKey:succ:fail: 成功回调之后再调用本接口,否则可能拿不到值。控制台或服务端发送测试消息时,使用该返回值定位设备或用户。

可用性

该接口不支持在 App Extension 中调用。

setRegistrationID:callback:

设置推送注册标识。

声明

+ (void)setRegistrationID:(NSString *)registrationID
callback:(TIMPushCallback)callback;

参数

参数
类型
说明
registrationID
NSString *
自定义推送注册标识。
callback
TIMPushCallback
设置完成回调。

说明

如果业务需要使用自定义 RegistrationID 向指定设备推送消息,请在调用 registerPush:appKey:succ:fail: 之前调用该接口。

可用性

该接口不支持在 App Extension 中调用。

disablePostNotificationInForeground:

设置 App 前台收到推送时是否展示通知。

声明

+ (void)disablePostNotificationInForeground:(BOOL)disable;

参数

参数
类型
说明
disable
BOOL
YES 表示关闭前台通知展示;NO 表示开启前台通知展示。

说明

App 处于前台时,SDK 收到在线推送后默认会展示通知。如果业务需要自行处理在线推送消息,可以将该参数设置为 YES

可用性

该接口可在主 App 中调用,未标注 App Extension 限制。

Swift 名称

disablePostNotificationInForeground(disable:)

addPushListener:

添加 Push 监听器。

声明

+ (void)addPushListener:(id<TIMPushListener>)listener;

参数

参数
类型
说明
listener
id<TIMPushListener>
Push 监听器对象。

说明

添加监听器后,SDK 会通过 TIMPushListener 回调 Push 消息、撤回通知和通知点击事件。

Swift 名称

addPushListener(listener:)

可用性

该接口不支持在 App Extension 中调用。

removePushListener:

移除 Push 监听器。

声明

+ (void)removePushListener:(id<TIMPushListener>)listener;

参数

参数
类型
说明
listener
id<TIMPushListener>
需要移除的 Push 监听器对象。

说明

不再需要接收 Push 事件时,请调用该接口移除监听器。

Swift 名称

removePushListener(listener:)

可用性

该接口不支持在 App Extension 中调用。

handleNotificationServiceRequest:appGroupID:callback:

在 Notification Service Extension 中处理推送请求。

声明

+ (void)handleNotificationServiceRequest:(UNNotificationRequest *)request
appGroupID:(NSString *)appGroupID
callback:(TIMPushNotificationExtensionCallback)callback;

参数

参数
类型
说明
request
UNNotificationRequest *
UNNotificationServiceExtension 接收到的通知请求。
appGroupID
NSString *
主 App 与 Notification Service Extension 共享的 App Group ID。
callback
TIMPushNotificationExtensionCallback
处理完成回调。回调携带处理后的通知内容。

说明

该接口用于统计 TIMPush 的推送抵达率。仅支持在 Notification Service Extension 的 didReceiveNotificationRequest:withContentHandler: 方法中调用。
使用该接口前,请完成以下配置:
1. 在主 App 的 Capability 中配置 App Groups 能力。
2. 在 AppDelegate 中实现 TIMPushDelegateapplicationGroupID 方法,返回 App Group ID。
3. 确保主 App 与 Notification Service Extension 使用同一个 App Group ID。

Swift 名称

handleNotificationServiceRequest(request:appGroupID:callback:)

TIMPushListener

TIMPushListener 协议未标注 @optional,实现该协议时需同时实现 onRecvPushMessage:onRevokePushMessage:onNotificationClicked: 三个方法。
三个回调的触发时机如下:
回调
触发时机
onRecvPushMessage:
App 在线时,收到带 offlinePushInfo 的 IM 消息时触发。
onRevokePushMessage:
App 在线时,收到消息撤回通知时触发。
onNotificationClicked:
用户点击通知栏消息时触发。包含 App 离线时由 APNs / Notification Service Extension 下发、点击后拉起 App 的场景。

onRecvPushMessage:

App 在线时,收到带 offlinePushInfo 的 IM 消息时触发。App 进程已退出时本回调不会触发。

声明

- (void)onRecvPushMessage:(TIMPushMessage *)message;

参数

参数
类型
说明
message
TIMPushMessage *
Push 消息对象。

onRevokePushMessage:

App 在线时,收到消息撤回通知时触发。App 进程已退出时本回调不会触发。

声明

- (void)onRevokePushMessage:(NSString *)messageID;

参数

参数
类型
说明
messageID
NSString *
被撤回消息的唯一标识。

onNotificationClicked:

用户点击通知栏消息时触发。无论 App 当时在前台、后台还是已退出(点击通知拉起 App),都会触发。需要先在腾讯云控制台将推送证书的「点击后续动作」配置为「打开应用内指定页面」,并保持默认填充值。

声明

- (void)onNotificationClicked:(NSString *)ext;

参数

参数
类型
说明
ext
NSString *
离线消息透传字段。

TIMPushDelegate

TIMPushDelegate 用于配置离线推送证书,以及接管远程推送和通知点击后的跳转处理。该协议继承自 UIApplicationDelegate,所有方法均为可选方法。

businessID

返回离线推送证书 ID。

声明

- (int)businessID;

返回值

IM 控制台分配的离线推送证书 ID。

说明

请在 AppDelegate 中实现该方法,返回 IM 控制台分配的离线推送证书 ID。
证书 ID 需要与当前运行环境对应。开发环境证书 ID 适用于 Xcode Debug 调试;生产环境证书 ID 适用于 Archive 后的 Release 包测试或发布。

applicationGroupID

返回主 App 与 Notification Service Extension 共享的 App Group ID。

声明

- (NSString *)applicationGroupID;

返回值

主 App 与 Notification Service Extension 共享的 App Group ID。

说明

请在 AppDelegate 中实现该方法。当您需要统计 iOS 10 及以上版本推送抵达率时,建议实现该方法,并返回已配置的 App Group ID。该值需与 handleNotificationServiceRequest:appGroupID:callback: 传入的 appGroupID 保持一致。

onRemoteNotificationReceived:

自定义处理收到的远程推送。该方法在 App 在线收到远程推送,或离线时用户点击通知栏通知时触发。

声明

- (BOOL)onRemoteNotificationReceived:(nullable NSString *)notice;

参数

参数
类型
说明
notice
NSString * _Nullable
远程推送通知内容。

说明

如需自定义解析远程推送通知,请在 AppDelegate 中实现该方法。

返回值

返回 YES 表示业务已自行处理该推送,TIMPush 不再执行内置的 TUIKit 离线推送解析逻辑。
返回 NO 表示 TIMPush 继续执行内置的 TUIKit 离线推送解析逻辑,并继续回调 navigateToBuiltInChatViewController:groupID:
处理通知点击后的页面跳转。

声明

- (void)navigateToBuiltInChatViewController:(nullable NSString *)userID
groupID:(nullable NSString *)groupID;

参数

参数
类型
说明
userID
NSString * _Nullable
单聊用户 ID。
groupID
NSString * _Nullable
群聊 ID。

说明

TIMPush 会从离线推送中解析 userIDgroupID。如果 groupID 不为空,表示当前点击的是群聊离线消息;如果 groupID 为空且 userID 不为空,表示当前点击的是单聊离线消息。

Swift 名称

navigateToBuiltInChatViewController(userID:groupID:)

TIMPushMessage

TIMPushMessage 表示 Push 消息对象。

属性

属性
类型
说明
title
NSString *
离线推送标题。
desc
NSString *
离线推送内容。
ext
NSString *
离线推送透传内容。
messageID
NSString *
消息唯一标识 ID。

错误码

TIMPushErrorCode 定义 TIMPush SDK 的业务错误码。
错误码
枚举值
说明
TIMPushErrorUndefinedCode
-1
未知错误。
TIMPushErrorNotLogined
800001
注册 Push 前未登录 IM 账号。
TIMPushErrorInvalidSdkAppId
800002
注册 Push 参数 sdkAppId 不合法。
TIMPushErrorRegisterPushInitFailed
800003
初始化 SDK 失败。
TIMPushErrorCallExperimentalApiFailed
800015
实验性 API 调用失败。
TIMPushErrorNotificationAuthorizationDenied
800016
用户拒绝通知授权。
TIMPushErrorHttpsRequestFailed
800017
HTTPS 请求失败。