本文说明即时通信 Chat 和推送服务 Push 的关系。读完后能判断要不要开通 Push,以及 SDKAppID 和密钥怎么配。
按目标选择服务
先确定要完成的事,再开通对应服务。三种需求可以组合,例如同时做聊天消息通知和运营推送。
方式 | 您想要完成的事 | 需要开通的服务 | 推送目标 |
1 | 只在 App 内收发聊天消息,不需要系统通知栏提醒 | 消息服务 Chat | 无 |
2 | 不集成 IM 聊天,仅推送运营消息 | 推送服务 Push | 设备 RegistrationID |
3 | 聊天消息需要在系统通知栏提醒,包括 App 退到后台或进程退出后 | 在同一个 Chat SDKAppID 上开通推送服务 Push | IM UserID |
说明:
消息服务 Chat 不自带离线推送,App 进程退出后仍要收到聊天消息通知,必须开通 Push 并接入 TIMPush。
IM 消息的离线推送依赖 Push 套餐能力,请以 计费说明 为准。
消息在线和离线分别走哪条通道,详细参见 收不到在线、离线推送排查流程。
接入步骤说明
方式 1:只接入消息服务 Chat
1. 接入 IM SDK。
2. 完成 IM 登录后收发 Chat 消息。消息走 IM 长连接,不需要配置厂商通道。
方式 2:只接入推送服务 Push
1. 接入 TIMPush。
2. 配置 APNs、Android 厂商或 HarmonyOS 通道。
3. 用户同意隐私政策后调用
registerPush,appKey 传 Push 客户端密钥(Push Key)。4.
registerPush 成功后,调用 getRegistrationID 获取设备 RegistrationID。5. 在腾讯云 Push 控制台或调用服务端 API 按 RegistrationID 推送运营消息。
方式 3:同时接入 Chat 和 Push
1. 接入 IM SDK 和 TIMPush,注意要在同一个 Chat SDKAppID 上开通推送服务 Push。
2. 配置 APNs、Android 厂商或 HarmonyOS 通道。
3. 按是否需要在用户登录前推送,选择注册顺序:
注册顺序 | 调用方式 | 可用推送目标 | 适用场景 |
先登录 IM 再注册 Push | IM login 成功后调用 registerPush(appKey = null/nil) | 登录后:IM userID注册后:IM userID / registrationID,此时 registrationID = IM userID | 只需在用户登录后推送聊天消息或运营消息 |
先注册 Push 再登录 IM | 用户同意隐私政策后调 registerPush(appKey = Push Key),再调用 IM login | 登录前: RegistrationID登录后: RegistrationID / IM UserID | 用户未登录时也要收到运营推送 |
4. 发送 IM 消息时,推送目标为接收方 IM
UserID。自定义消息必须在 OfflinePushInfo 中设置 desc,否则不展示离线通知。注意:
同时接入 Chat 和 Push 时,必须使用同一个 SDKAppID,但两个服务的密钥不同,详细参见 即时通信 Chat 和推送服务 Push 的 SDKAppID 和密钥有什么区别?。其中,Chat 密钥用于生成 IM 登录所需的 UserSig,不能作为
registerPush 的 appKey。registerPush 中的 Push Key 不为空时,设置为腾讯云控制台 > 即时通信 IM > 推送服务 Push > 概览中的客户端密钥。用户退出 IM 登录后,
UserID 和 RegistrationID 的推送关系都会失效,需要重新完成注册。禁止:
如果您的业务仅需要在用户登录后推送聊天消息,请不要在登录前调用
registerPush。否则 IM SDK 会注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,会产生额外费用。