服务器在 iOS 应用程序终止时发送数据

Server sends data while iOS app is terminated

我有一个与远程服务器通信的应用程序。服务器应该静默地使用远程通知将数据推送到其中,我需要获取这些数据并将其存储到 CoreData 数据库中。用户不会知道整个过程。

当应用程序在前台或后台模式下收到远程通知时,我可以成功收到通知。但是,我也需要在应用程序终止时获取数据。

我搜索了可能的解决方案。例如,如果我不倾向于使用静默通知, 就很好。我也看到了 PushKit 的能力,但是我不确定 Apple Review 的结果。

  1. 可能的解决方案是什么?
  2. 如果我想使用 VoIP 和 PushKit 在应用程序终止时收到通知,Apple 会拒绝我的申请吗?

如果您不是在创建 VoIP 应用程序,并且希望您的应用程序出现在 App Store 中,那么正确答案是:这是不可能的。唯一可以做的就是以某种方式调整您的要求。

例如,您可以发送一些通知,用户可以在通知中心看到这些通知,然后等到用户点击通知或以通常的方式启动应用程序。然后该应用程序将能够执行您需要的所有操作。

无法保证推送通知的传递,因此您不应依赖它们来同步数据。

例如,如果在设备离线时发送了多个推送通知,则当设备重新在线时仅发送最后一个通知;较早的通知丢失。

当您的应用程序启动时,它应该做的第一件事就是检查您的服务器是否有新数据。