我的应用使用推送通知在用户收到消息时提醒用户。由于我的服务器的性质以及加密,服务器不知道消息是什么,只有iPhone能够解密它。但是,我希望在通知中显示该消息。因此,在静默推送下载和解密消息之后我需要处理时间,然后使用本地通知告诉用户
但是,iOS不允许处理被杀应用程序的处理时间,仅适用于前景应用程序或仍在应用程序切换器中的应用程序。我该如何解决这个问题?
我发现的一个解决方案是PushKit。这似乎重新启动应用程序,即使他们已被强制退出。但是,它只对VoIP应用程序执行此操作,我的应用程序不是VoIP应用程序,我认为App Review将拒绝它,如果我使用PushKit
答案 0 :(得分:1)
正如您所描述的那样,没有什么可以添加的。如果应用程序被杀死,您无法处理除PushKit之外的静音推送通知,但如果您使用PushKit,则如果您的应用程序未实施VoIP,您的应用程序将不会通过审核。
您最好的选择是发送包含通用文字的推送通知(例如“您有新邮件”),而不是静默推送通知,这将作为应用程序被杀死案例的后备。如果应用程序未被杀死,您可以放弃/删除远程通知,下载并解密消息并显示包含实际消息的本地通知。如果应用程序被终止,将显示带有通用文本的远程通知,并且至少会通知用户有新消息。
将此行为添加到您应用的常见问题解答中,以鼓励用户不要杀死该应用。没有理由在iOS上这样做,所以如果用户杀死了一个应用程序,他就不应该期望它能够按预期运行。
除了误用PushKit之外: 如果您滥用功能/服务而不打算使用它,您的应用可能会被拒绝。因此,如果您启用VoIP后台模式,但您的应用程序不提供任何VoIP功能,则非常明显。 来自App Store Review Guidelines:
2.16多任务应用程序只能将后台服务用于其预期目的:VoIP,音频播放,位置,任务完成, 本地通知等