跳到主要内容

测试 APNs 远程推送

完成 APNs 集成步骤以后,可直接测试推送是否集成成功。

准备测试 App

安装方式发布方式描述文件类型推送至 APNs Sandbox 环境推送至 APNs Production 环境
Xcode run(模拟器)////
Xcode run(真机)/开发支持,必须使用融云应用开发环境的 App Key 和 APNs 配置。不支持
IPA 文件Development开发支持,必须使用融云开发环境的 App Key 和 APNs 配置。不支持
第三方 App 平台(如,蒲公英)Ad HocAd Hoc 发布不支持推荐使用融云应用生产环境的 App Key 和 APNs 配置。
第三方 App 平台(如,蒲公英)EnterpriseEnterprise 发布不支持推荐使用融云应用生产环境的 App Key 和 APNs 配置。
TestFlightApp Store ConnectApp Store 发布不支持支持,但必须使用融云应用生产环境的 APNs 配置。
App StoreApp Store ConnectApp 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 帮助文档:

测试接收推送

建议先使用比较简单的单聊场景测试推送。步骤如下:

  1. App 连接融云成功之后杀掉 App 进程。
  2. 访问控制台的 IM Server API 调试页面,找到消息 > 消息服务 >发送单聊消息,直接给当前 App 用户发送一条单聊消息内容。
  3. 查看手机是否收到推送。

故障排除

如果未能收到推送,请先检查以下项目:

  • 如果客户端断开连接时设置了不允许推送,例如调用了 logout 方法,则会彻底注销在融云服务端的登录信息。融云服务端仅记录离线消息,但不会触发推送服务。
  • 如果 App 用户已在 Web/PC 端在线,此时融云认为用户在线,默认不会给移动端发送推送通知。如有需要,您可以在控制台免费基础功能页面调整 Web/PC 在线手机端接收 Push 开关设置。
  • 如果 App 用户使用多台移动端设备,融云服务端仅向最后一个登录的设备发送推送通知。

您可以通过控制台的「北极星」查看消息发送与接收状态,以及具体的推送错误:

  1. 访问控制台的「北极星」消息流转页面,切换到正确的环境(开发/生产),根据页面提供的搜索条件搜索消息,点击查询

  2. 在查询结果页面,找到需要排障的消息,点击「接收状态」栏中的查看

    (width=550)

  3. 目标用户消息接收状态下,检查消息已通过推送下发给消息收件人。如果出现问题,该页面会显示具体原因。

    (width=550)

  4. 根据以下错误,排查是否已参照文档正确集成 APNs:

    常见推送错误码问题原因解决方案
    P16该消息不属于融云内置类型消息类型(详见消息类型概述),缺少推送通知内容(pushContent),因此无法推送。如果发送自定义消息类型的消息,且需要支持推送,则必须在发送消息时设置 pushContent。
    P17收件人设置了全局免打扰排查是否设置了对应功能。详见全局免打扰
    P19收件人设置了单个会话的免打扰排查是否设置了对应功能。详见免打扰功能概述超级群免打扰功能概述
    P23deviceId 为空设置 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

    您可以在知识库中查询北极星消息流转返回的全部推送错误码

  5. 如果问题持续,可直接提交工单,提供您的消息 ID 与查询结果。

npm