【发布时间】:2012-01-05 17:18:42
【问题描述】:
如果手机关闭了远程推送通知的接收,或者推送通知发送失败,是否可以通知推送发起者发送失败?
我知道有反馈服务可用于查询失败的交付尝试,但这听起来像是一种拉式反馈,而不是像为每个推送通知发送的收据。
假设我们向 100,000 台设备发送了推送通知,那么我们是否可以连接到反馈服务并查看哪些设备失败了?这有多准确,在反馈信息可用之前是否有时间延迟?
【问题讨论】:
标签: ios
如果手机关闭了远程推送通知的接收,或者推送通知发送失败,是否可以通知推送发起者发送失败?
我知道有反馈服务可用于查询失败的交付尝试,但这听起来像是一种拉式反馈,而不是像为每个推送通知发送的收据。
假设我们向 100,000 台设备发送了推送通知,那么我们是否可以连接到反馈服务并查看哪些设备失败了?这有多准确,在反馈信息可用之前是否有时间延迟?
【问题讨论】:
标签: ios
您无法判断推送是否已送达。
反馈服务旨在通知您一段时间内未能提供推送的设备。您应该对那里的数据采取行动,并停止向该设备发送推送。进入反馈服务可能需要一些时间,因为只有当 Apple 认为设备已卸载您的应用程序,或设备不再使用,或类似事件而不仅仅是设备时,它才真正意味着进入那里。目前超出范围且与 APNS 没有连接。
【讨论】:
除了马特所说的,APNS 提供了第二种更直接的机制来了解一些类型的错误:错误响应数据包。这些数据包会在推送通知时立即返回,在发生支持的错误时为您提供实时反馈,并让您有机会立即采取行动。如果通知被 APNS 接受并且没有返回错误响应数据包,那么反馈服务将成为以后知道通知是否到达设备的唯一方法(即使这样,被反馈服务列出的条件是没那么简单)。
反馈服务和错误响应数据包报告不同类型的错误,因此您不能单独依赖其中任何一个:您必须处理两种机制报告的错误。
像JavaPNS 这样的一些库会自动处理错误响应包。
【讨论】: