推送通知在排除之前需要多长时间才能排队?

我一直在尝试为客户端的苹果推送通知发现一些数据,而我一直无法find答案的是推送通知在离线设备队列中将被移除多长时间。

例如,可能会有很长的时间,例如2-3个月,其中设备可能处于非活动状态并断电。 我只是想知道多久,我可以期待一个通知stream连忘返,等待被传递到一个离线设备,才会被自动删除(这正是我所知道的是什么发生)。

官方开发者文档不清楚这一点。 来自developer.apple.com :

Apple推送通知服务包括执行存储转发function的默认服务质量(QoS)组件。 如果APN尝试发送通知但设备处于脱机状态,则QoS会存储通知。 它仅在设备上保留每个应用程序的一个通知:从该应用程序的提供者接收到的最后一个通知。 当离线设备稍后重新连接时,QoS将存储的通知转发给设备。 QoS在删除之前会在有限的时间内保留通知。

但据PCWorld报道,这是28天:

如果应用程序正在运行,它会立即得到通知。 如果应用没有运行,通知会保存在手机中,以便在应用下次启动时使用。 如果发送者尝试传送时iPhone处于脱机状态,则APNS会尝试发送通知28天。

虽然2009年可能有28天,如果今天不同,我也不会感到惊讶。 文档中的含糊不清是苹果改变这个超时时间的一个很好的借口。

在挖掘文档时,我发现我们可以使用'expiration date'参数来控制APNS通知的排队。

以下是关于到期date的使用的详细说明

apns-expiration

以秒(UTC)表示的UNIX纪元date。 该标题标识通知不再有效并可以被丢弃的date。

如果此值不为零,APN将存储通知并尝试至less传递一次,如果第一次无法传递通知,则会根据需要重复尝试。 如果值为0 ,则APN将通知视为立即过期,并不存储通知或尝试重新发送通知。