设备上线后iOS中的推送通知异常行为

时间:2015-07-21 17:04:53

标签: ios parse-platform apple-push-notifications ionic

我在Ionic应用程序中使用Parse进行推送通知。虽然当设备在线时推送通知在iOS和Android中都能正常工作,但当设备脱机然后在线时,Android和iOS中的行为会有很大差异。

在Android中,收到设备离线时发送的所有通知。在iOS中,会发生以下任一情况:

  • 我收到所有推送通知
  • 我没有推送通知
  • 我从队列中获得一个随机推送通知
  • 我从队列中收到最后一个通知

这种看似随机的行为是否会在APNS中出现,或者是否有一些我在Parse中缺失的设置?我还读到,在这种情况下不应该依赖APNS。

1 个答案:

答案 0 :(得分:2)

From the official APNS documentation

  

Apple推送通知服务包括服务质量(QoS)   执行存储转发功能的组件。

     

如果APN尝试发送通知和目标设备   离线时,APN会在一段有限的时间内存储通知   并在设备再次可用时发送。

     

此组件仅存储每台设备的最新通知   和每个应用程序。如果设备处于脱机状态,则发送通知请求   定位该设备会导致先前的请求被丢弃。如果   设备长时间保持脱机状态,所有存储的通知   在APN中被丢弃。

     

Apple推送通知服务包括服务质量(QoS)   执行存储转发功能的组件。如果APN尝试   通过APN发送通知并且目标设备处于脱机状态   将通知存储在有限的时间段内并将其发送   当设备再次可用时。此组件仅存储   每台设备和每个应用的最新通知。如果是设备   离线,发送针对该设备的通知请求   先前的请求被丢弃。如果设备保持脱机状态   很长一段时间,它在APN中存储的所有通知都被丢弃了。

对于GCM,您可以使用collapse keys实现类似的行为:

  

此参数标识一组消息(例如,使用   collapse_key:“可用更新”)可以折叠,仅限于此   在可以恢复交付时发送最后一条消息。这是   旨在避免在发送时发送过多相同的消息   设备重新联机或变为活动状态(请参阅delay_while_idle)。

     

请注意,无法保证邮件的获取顺序   发送。

iOS上的随机行为似乎很奇怪,但可能只是因为推送通知不是100%保证交付,也不是按发送顺序排列。