如何确保iOS应用程序收到服务器发送的每个推送通知?

众所周知,

  • 如果应用程序处于后台或脱机模式, 应用程序不会收到推送通知( 应用程序在用户操作后获取一次:点按通知或应用程序图标 )。
  • 设备处于脱机状态时,Apple推送通知服务保留最后一个通知 。 一旦设备连接到互联网,APN发送最后的通知。

如何解决这个问题?

  • 刚到达应用程序( 非设备 )的最新通知必须反映在应用程序中尚未实现的实际通知数量。 那么,我可以从服务器上下载最后n通知,并随时在应用程序中执行它们。

问题是:

服务器如何知道应用程序中实现了哪些通知,以及哪个不是?

通知必须是每个设备。 为什么? 例如,必须在每个设备上执行通知“从核心数据中删除对象”。 因为只有一个用户可以在多个设备上login。

您应该在服务器上跟踪任务的状态(删除logging或任何您的应用程序需要执行的操作),并在完成任务时向客户端报告。 然后将任务标记为完成。

不要使用推送通知作为您的任务的可靠交付方式,您将失败。 使用通知作为您的设置的补充部分。

因此,例如当您的应用程序收到通知时,它可以与后端同步,检索标记为未完成的任务,执行它们,然后让后端知道它已完成。