一、「如何理解送达成功率」

  • 查询具体设备是否已送达,服务端提供了 API 查询,需要 registrationID 信息,如果你使用的服务端 SDK 不支持,请升级到最新版。

二、关于 iOS 的成功率

  • iOS APNs 通知的成功数代表极光服务器成功发到 Apple 服务器的数据(不代表实际送达到手机上),目标数与成功数之差为失败数,失败的原因一般是 Apple 判断 token 失效了,App 已经卸载了、客户端配的 BundleID 和官网鉴权的 BundleID 不一致等。

  • 对 Apple 判断已卸载的 App 数,会继续保留在目标数内 一段时间,定期会做清理;时间不定,开发者可能会观测到的情况是:某天同样条件下,目标数较前一天 少了许多,或者先成功数下降然后接着下一条消息的目标数下降,便是清理所致。(在未清理时,会出现目标数和成功数比实际有效目标多的情况)

  • 从 iOS 10 ,极光 SDK 3.0.7 开始,支持 iOS 设备真实的送达数统计(Apple 服务器成功发给了 iOS 设备),此前开发者观测 成功数 即可。
    该功能集成指南点我API 说明点我

  • iOS 自定义消息的数据,在官网控制台,需要展开推送记录详情才看得到:「自定义目标 | 自定义送达」
    自定义消息必须在前台才能收到,即与极光服务器建立了连接。

三、关于 Android 的成功率

- 普遍的疑问:Android 的成功率相较 iOS 的低太多。

答:Android 的通知和自定义消息的送达 不应与 iOS 的 APNs 通知做比较,而应与 iOS 的自定义消息做比较。

  • Android 的消息、iOS 的自定义消息,收到的前提条件都是 「与极光服务器建立起连接」;

  • 而 iOS 的 APNs 通知,走的是 iOS APNs 系统通道,不论你的 App 是处于后台,还是杀死,APNs 通知都基本可以到达,因为他与你的 App 是否活跃无关,只与设备本身是否可以正常收通知(开机且网络正常且允许你通知)有关。

  • 另:iOS 通知的成功数也不是实际送达设备的数据,是已成功发到 Apple 服务器的数据,不过与实际送达数相差不会很大,其中的差别产生的可能情况:用户关机、断网;发的消息过多而 Apple 服务器只保留 1 条离线消息;Apple 服务器丢失消息(Apple 对 APNs 通知不保证 100% 送达)等。

- 正确理解 Android 的送达率

  • Android 客户端是长连接机制,和极光服务器建立上连接的时候才能及时收到推送,所以判断送达,请根据在线数判断。

  • 客户端离线的可能:断网、进程不在、关机、主动调用了 stopPush 关闭了服务等

  • 对于这些离线的客户,极光有离线消息机制去保证。免费用户:默认为每个客户端保留最近 5 条消息,默认保留一天,最长 10 天,可自行在推送时设置。API推送设置 time_to_live 字段,官网推送在 推送-可选设置-离线保存时长 处设置。
    VIP 用户:可以根据需要调节保留条数和天数。只要用户在离线保存时间范围内上线,那就能收到之前的推送。

  • 所以 Android 的成功数是会随着离线用户的上线而持续增加的。注:若离线期间推送给该用户的消息超过 5 条,则会删除最早的消息,删除掉的消息将不再会收到。

- 如何提高 Android 的送达率

  • 由于手机系统对于省电、省流量、省内存等的需求,会对退到后台的 App 、手机锁屏等情况实行各种不同的限网、清理措施,并限制 App 的自启动、重启、拉起等,每款手机都不一样,暂时来说,没有什么特别有效的解决办法。
    可阅读这篇帖子里提到的「3.1.6 版本开始新增通道共享」「添加拉起」「手动开启权限」,一定几率上提高 App 在线、收到消息的可能。

  • 最优的方法,自然是运营得当,尽量提高你 App 用户的在线,活跃度。

  • 升级 VIP 服务,添加厂商通道功能,可以在 App 杀死时走系统通道下发,详情联系商务


如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ