我正在尝试在我的应用程序中实现静默推送通知,当静默通知到来时,我需要更新服务器中的一些数据。我正在使用Pushkit,它使用VoIP证书进行静默推送通知,但该应用程序已被Apple拒绝,称"我无法使用VoIP"证书。苹果似乎拒绝了它,因为我的应用程序中没有任何VoIP呼叫功能。在这种情况下,我如何实现静默推送通知,以便我的应用程序即使没有运行(甚至在后台(也能被激活,并且我可以更新服务器?
根据我的经验,iOS 尊重用户的选择,因此如果用户杀死了应用程序,它将保持死亡状态 - 没有静默推送通知会唤醒此应用程序。 VoIP是一个例外,但正如您所写,它应该仅在VoIP应用程序中使用。这是有道理的,将其视为平台限制:由于该用户可以对手机上实际运行的内容进行一些控制,因此设备消耗的电池更少,最后,前台/系统应用程序具有最多的CPU时间可以利用。
在后台处理数据的技术很少:
- 内容可用的推送通知:在应用程序挂起时唤醒应用程序,或在应用程序被系统杀死/崩溃时启动应用程序。请注意,这只会打开一个 30 秒的窗口,并且通知量会受到 APNS 的限制。
- 后台提取功能将以类似的方式运行。
- 用于完成现有任务的后台任务 - 但这仅在应用移动到后台时使用。
如果您需要应用程序将更新发送到服务器,我相信上面应该足够了(除非您的应用程序正在监视用户,否则一旦用户完成与应用程序的交互,它应该具有所有相关数据(。
如果您需要服务器将数据发送到应用程序,请使用静默推送通知(或用于定期拉取的后台提取(,或者如果此数据对用户至关重要,您可以向他提供远程通知 - 如果用户认为这是一个重要的更新,他将打开应用程序。