从Apple的文档中我了解到,如果设备处于离线状态,APNS会保留最后一个通知,并在设备重新联机时将其发送给设备。是否有任何机制可以避免重发?
答案 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 不应存储通知。