4

我正在尝试在我的应用程序中实现静默推送通知,当静默通知到来时,我需要更新服务器中的一些数据。我正在使用 Pushkit,它使用 VoIP 证书进行静默推送通知,但该应用程序已被 Apple 拒绝,说“我不能使用 VoIP”证书。似乎苹果拒绝了它,因为我的应用程序中没有任何 VoIP 呼叫功能。在这种情况下,我如何实现静默推送通知,以便即使我的应用程序没有运行(甚至在后台也没有)也能被激活并且我可以更新服务器?

4

1 回答 1

2

根据我的经验,iOS 尊重用户的选择,所以如果用户杀死了应用程序,它将保持被杀死 - 没有静默推送通知会唤醒这个应用程序。VoIP 是一个例外,但正如您所写,它应该只在 VoIP 应用程序中使用。这是有道理的,将其视为平台限制:由于用户可以控制手机上实际运行的内容,设备消耗的电池更少,最后,前台/系统应用程序拥有最多的 CPU 时间可以利用。

在后台处理数据的技术很少:

  1. 内容可用推送通知:将在应用程序挂起时唤醒应用程序,或在应用程序被系统杀死/崩溃时启动它。请注意,这只会打开一个 30 秒的窗口,并且通知数量会受到 APNS 的限制。
  2. 后台获取功能将以类似的方式运行。
  3. 完成现有任务的后台任务 - 但这仅在应用程序移至后台时使用。

如果您需要 App 向服务器发送更新,我相信以上内容就足够了(除非您的 App 正在监视用户,否则一旦用户完成与 App 的交互,它应该拥有所有相关数据)。

如果您需要服务器向应用程序发送数据,使用静默推送通知(或后台获取定期拉取),或者如果此数据对用户至关重要,您可以向他发送远程通知 - 如果用户认为重要更新,他会打开应用程序。

于 2018-06-27T07:14:21.767 回答