iOS- Apple推送通知从APNS重新发送

时间:2013-09-11 11:55:19

标签: iphone ios ipad push-notification apple-push-notifications

从Apple的文档中我了解到,如果设备处于离线状态,APNS会保留最后一个通知,并在设备重新联机时将其发送给设备。是否有任何机制可以避免重发?

3 个答案:

答案 0 :(得分:16)

正确答案是

如果使用enhanced binary format(包含邮件标识符和到期日期)发送通知,则可以使用expiry参数来阻止通知存储在APN服务器中。这样,只有当APN服务器首次尝试传送设备时,才会传送通知。

  

<强>到期

     

以秒(UTC)表示的固定UNIX纪元日期,用于标识通知何时不再有效且可以丢弃。到期值使用网络字节顺序(大端)。如果到期值为正,则APN尝试至少传递一次通知。 指定零(或小于零的值)以请求APN不存储所有通知

答案 1 :(得分:6)

答案是

以下是苹果对此的评论,

  

如果APN尝试发送通知但设备处于离线状态,   通知存储一段有限的时间,并交付   设备何时可用。

     

仅存储特定应用程序的最近通知。   如果在设备离线时发送多个通知,则每个通知   新通知导致先前通知被丢弃。这个   仅保留最新通知的行为称为   合并通知。

     

如果设备长时间处于离线状态,则会发出任何通知   被存放,因为它被丢弃。

答案 2 :(得分:2)

我同意伊兰的观点。

您问题的这一部分&#34; APNS保留最后一个通知,并在设备重新联机时将其发送给设备&#34;仅当到期日期不为零时才为真。

如果您确实希望在手机上线时传递信息,则该信息将等到&#34;到期日期&#34;之前被丢弃。

APNS文件:

  

到期日期4个字节以星期(UTC)表示的UNIX纪元日期   它标识通知何时不再有效且可以   丢弃。 如果此值不为零,则APN会存储通知   尝试至少提交一次通知。指定零到   表示通知立即到期并且APNs   不应存储通知

有关详细信息,请参阅https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html