我一直在努力为客户端发现苹果推送通知的一些数据,而我无法找到答案的是推送通知将排入队列的时间长短脱机设备才会被删除。
可能有很长一段时间,例如2-3个月,其中设备可能处于非活动状态并且已关闭电源。我只是想知道在自动删除通知之前我可以预期会有多长时间停留,等待传递给离线设备(这就是我所理解的情况)。
答案 0 :(得分:17)
官方开发者文档不清楚这一点。来自developer.apple.com:
Apple推送通知服务包含默认的服务质量 执行存储转发功能的(QoS)组件。如果是APN 尝试发送通知但设备处于离线状态,即QoS 存储通知。它每个只保留一个通知 设备上的应用程序:从a收到的最后一个通知 该应用程序的提供者。当离线设备以后 重新连接后,QoS将存储的通知转发给设备。 QoS会在删除之前保留有限时间段内的通知 它强>
但根据PCWorld,这是28天:
如果应用正在运行,则会立即收到通知。如果 应用程序没有运行,通知是在手机中保存的 在应用程序的下一次发布时消耗。如果iPhone离线时 发件人尝试发送,APNS尝试发送通知 28天。
虽然2009年的情况可能已经过了28天,但如果今天与众不同,我也不会感到惊讶。文档中的含糊不清是苹果不顾一切地改变这个超时期限的一个很好的借口。
答案 1 :(得分:3)
在挖掘文档后,我发现我们可以使用“过期日期”参数来控制APNS通知的排队。
Here是有关使用截止日期的详细说明
apns-expiration
以星期(UTC)表示的UNIX纪元日期。此标头标识通知不再有效的日期,可以丢弃。
如果此值非零,则APN会存储通知并尝试至少传递一次,如果第一次无法传递通知,则会根据需要重复尝试。如果值为
0
,则APN会将通知视为立即过期,并且不会存储通知或尝试重新发送通知。