iOS 收不到消息 / 排查不出请根据第 5 点说明提供信息

iOS 收不到消息 / 排查不出请根据第 5 点说明提供信息

首先确认推送是否是成功的,消息是否是正确的

调 API 推送或官网推送时,官网是否显示已成功, API 是否返回 HTTP code 200 和 msgid

是否调用的是推送校验的 API ,消息实际没有推送出去

若失败,官网会在页面上方提示,API 会返回错误码,根据错误码在列表中找到报错原因

你 API 推送消息所使用的 Appkey 是否与你客户端配置的 Appkey 不一致?请仔细检查。

你是否推送的是自定义消息而不是通知消息,自定义消息只有当 App 处于前台时才会接收,且默认是不展示的

推送时 通知内容(Alert)是否为空 ,为空则不展示

推送时选择的环境与测试设备的打包环境必须一致。两种环境的正确测试姿势点我

API 推送的时候通过参数 apns_production 来指定推送环境,false 为开发环境,true 为生产环境。V3 api不带此参数则默认为生产环境,V3 API 封装的 SDK 默认设定为开发环境。如果调 API 时有手动传 apns_production 则以此值为准。

其次确认客户端是否已经集成成功

确认 AppKey 在 SDK 客户端的设置与 官网应用信息 上的是一致,其他环节也按照文档正确地操作。

检查 官网 上上传的证书,是 APNs (Push) 证书,且官网证书状态为已验证。

是否可以获取到 RegistrationID 的值(能取到表示集成成功),若取不到 ID 请获取一下客户端日志信息,是否有报错内容,将日志信息提供给官方分析。

是否可以取到 token 值并上报 token 给极光成功?从 3.0.9 版本开始,在未取到 token 的情况下也会取到 registrationID ,可以使用自定义消息,但无法收到通知,请务必查看客户端日志检查 token 的获取情况。

初始化代码中 apsForProduction:isProduction 的值需要与客户端的证书环境保持一致。

客户端配的 bundleID 和极光官网配的 bundleID 必须一致才能收到 Notification 通知消息。着重注意检查 Bundle ID 的一致性

最后确认客户端是否可以正常接收 / 展示推送消息

在官网推送历史详情中看到目标已送达,代表极光已成功的将信息发给了 Apple 服务器,等待 Apple 服务器的处理,高峰期可能存在延迟问题。

确认测试手机已成功连入网络(可以切换网络来判断是否该网络运营商有问题),如果设备离线,期间推送多条,APNs 服务器只会离线保留一条(极光服务器对自定义消息离线可保留 5 条)

Apple 服务器对 apns 消息并不保证 100% 送达,特别是高峰期、网络波动时做高频推送会出现漏消息的情况。

iOS 不支持在模拟器上测试推送功能,因为没法获取到 token 值。

检查是否调用了反注册代码 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

客户端处于前台运行状态还是后台,iOS 10 系统以下处于前台,收到通知不会提醒。

是否在某种操作下调用了清除角标的 API ,角标清除,通知栏消息就会马上消失

手机端—设置—通知—提醒方式是否设置了横幅提醒

初始化注册时的提醒类型选择了 alert 了没有:entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;

XCode 8 以上有一个新的功能,开启后才能收到推送通知

可以对比测试 官网推送 和 API 推送,若只有某一方收不到,请对比推送历史—详情—找到两条消息的区别

安装的应用同一时间最多只能收到一个环境的 APNs 消息。

如果能收到生产的通知,说明应用当前环境是生产的,那此时就无法收到开发环境的通知,反之亦然。

根据上述内容排查未果,提供如下信息给官方协助查询

请说明你根据排查步骤已确认有哪些信息是正确的,没有收到推送的依据是什么?务必提供如下两个信息,复制粘贴为文本,缺一不可:

Message ID(调用 API 请求成功后会返回 msgid ,官网 - 推送历史 - 操作 - i 详情里面也可以查看该信息,如果查不到历史请注意筛选条件,历史只保存 30 天)

测试设备的 registrationID(不管是广播、别名、标签还是其他方式推送,均必须提供该信息,只有 registrationID 才能精准定位到你的设备),该信息只能在客户端调 API 获取,服务端无法取到,服务端若需存储请让客户端获取后上传 。

你可能感兴趣的:(iOS 收不到消息 / 排查不出请根据第 5 点说明提供信息)