测试 APNs 远程推送
测试 APNs 远程推送
完成 APNs 集成步骤以后,可直接测试推送是否集成成功。
准备测试 App
安装方式 | 发布方式 | 描述文件类型 | 推送至 APNs Sandbox 环境 | 推送至 APNs Production 环境 |
---|---|---|---|---|
Xcode run(模拟器) | / | / | / | / |
Xcode run(真机) | / | 开发 | 支持,必须使用融云应用开发环境的 App Key 和 APNs 配置。 | 不支持 |
IPA 文件 | Development | 开发 | 支持,必须使用融云开发环境的 App Key 和 APNs 配置。 | 不支持 |
第三方 App 平台(如,蒲公英) | Ad Hoc | Ad Hoc 发布 | 不支持 | 推荐使用融云应用生产环境的 App Key 和 APNs 配置。 |
第三方 App 平台(如,蒲公英) | Enterprise | Enterprise 发布 | 不支持 | 推荐使用融云应用生产环境的 App Key 和 APNs 配置。 |
TestFlight | App Store Connect | App Store 发布 | 不支持 | 支持,但必须使用融云应用生产环境的 APNs 配置。 |
App Store | App Store Connect | App Store 发布 | 不支持 | 支持,但必须使用融云应用生产环境的 App Key 和 APNs 配置。 |
准备推送测试环境
融云应用区分开发与生产环境,使用不同的 App Key。融云服务端向 APNs 发送推送请求时可能有多种组合,
必要条件:
- 使用真机:请使用真机进行测试,模拟器收不到远程推送。
- 使用未越狱的设备:请勿使用越狱的设备,已越狱的设备可能收不到远程推送。
- 确认 BundleID 中未包含通配符:使用通配符 BundleID 的 App 将无法使用远程推送。
打包指导:
通过 Xcode 在真机运行时,请使用融云应用的开发环境的 App Key,在融云应用的开发环境中,如果使用 P8、P12 证书,融云服务端仅向 APNs Sandbox 环境推送,如果使用 P12 通用证书,应配置为推送到 APNs Sandbox 环境。
通过 Development 方式打包时,请使用融云应用的开发环境的 App Key,在融云应用的开发环境中,如果使用 P8、P12 证书,融云服务端仅向 APNs Sandbox 环境推送,如果使用 P12 通用证书,应配置为推送到 APNs Sandbox 环境。
使用 Ad-Hoc/TestFlight/AppStore 方式打包时,建议使用融云应用的生产环境的 App Key(需要在控制台申请上线)。只要是 生产环境的 App Key,融云服务端仅向 APNs Production 环境推送。
例外情况:在融云应用的开发环境中,如果使用 P12 通用证书,允许配置为向 APNs Production 环境推送,以满足测试需求。
如有疑问,您可以参考 Xcode 帮助文档:
- Xcode 帮助文档:Distribute to registered devices (iOS, tvOS, watchOS)。
- Xcode 帮助文档:Distribute an app using TestFlight (iOS, tvOS, watchOS)。
测试接收推送
建议先使用比较简单的单聊场景测试推送。步骤如下:
- App 连接融云成功之后杀掉 App 进程。
- 访问控制台的 IM Server API 调试页面,找到消息 > 消息服务 >发送单聊消息,直接给当前 App 用户发送一条单聊消息内容。
- 查看手机是否收到推送。
故障排除
如果未能收到推送,请先检查以下项目:
- 如果客户端断开连接时设置了不允许推送,例如调用了
logout
方法,则会彻底注销在融云服务端的登录信息。融云服务端仅记录离线消息,但不会触发推送服务。 - 如果 App 用户已在 Web/PC 端在线,此时融云认为用户在线,默认不会给移动端发送推送通知。如有需要,您可以在控制台免费基础功能页面调整 Web/PC 在线手机端接收 Push 开关设置。
- 如果 App 用户使用多台移动端设备,融云服务端仅向最后一个登录的设备发送推送通知。
您可以通过控制台的「北极星」查看消息发送与接收状态,以及具体的推送错误:
访问控制台的「北极星」消息流转页面,切换到正确的环境(开发/生产),根据页面提供的搜索条件搜索消息,点击查询。
在查询结果页面,找到需要排障的消息,点击「接收状态」栏中的查看。
在目标用户消息接收状态下,检查消息已通过推送下发给消息收件人。如果出现问题,该页面会显示具体原因。
根据以下错误,排查是否已参照文档正确集成 APNs:
常见推送错误码 问题原因 解决方案 P16 该消息不属于融云内置类型消息类型(详见消息类型概述),缺少推送通知内容(pushContent),因此无法推送。 如果发送自定义消息类型的消息,且需要支持推送,则必须在发送消息时设置 pushContent。 P17 收件人设置了全局免打扰 排查是否设置了对应功能。详见全局免打扰。 P19 收件人设置了单个会话的免打扰 排查是否设置了对应功能。详见免打扰功能概述 或 超级群免打扰功能概述。 P23 deviceId 为空 设置 deviceToken。请检查集成步骤是否已完成。详见集成 APNs 远程推送中的设置 deviceToken。 P60 加密消息没有推送 无 PUSH_I9 证书加载错误 检查控制台是否上传了正确的推送证书。请检查集成步骤是否已完成。详见集成 APNs 远程推送。如确认证书无误,请联系融云继续排查。 Rong_DeviceToken_Invalid 上传的 deviceToken 有误 设置 deviceToken。请检查集成步骤是否已完成。详见集成 APNs 远程推送中的设置 deviceToken。 APNS_4_4_null 证书过期 排查推送证书是否过期,如果过期,需要重新上传到控制台,如确认证书未过期,请联系融云继续排查。 APNS_A2_2400{"reason":"BadDeviceToken"} 打包环境有误 请检查在融云后台上传的证书类型、配置、与您使用的 provisioning file 是否完全匹配。 PUSH_IP8_ERR 打包环境有误 请检查在融云后台上传的证书类型、配置、与您使用的 provisioning file 是否完全匹配。 APNs_XXX 推送至苹果后失败,XXX 为 APNs 错误码 参考 Apple 官方开发者文档的 APNs 错误码说明 Communicating with APNs。 您可以在知识库中查询北极星消息流转返回的全部推送错误码。
如果问题持续,可直接提交工单,提供您的消息 ID 与查询结果。