iOS - 静默推送后我需要处理时间

标签 ios push-notification apple-push-notifications

我的应用程序利用推送通知在用户收到消息时提醒他们。由于我的服务器的性质以及加密,服务器不知道消息是什么,只有 iPhone 能够解密它。但是,我希望消息显示在通知中。所以我需要静默推送后的处理时间来下载和解密消息,然后使用本地通知告诉用户

但是,iOS 不允许对已终止的应用程序进行处理,只允许对前台应用程序或仍在应用程序切换器中的应用程序进行处理。我该如何解决这个问题?

我找到的一个解决方案是 PushKit。这似乎会重新启动应用程序,即使它们已被强制退出。但是,它只对 VoIP 应用程序执行此操作,我的应用程序不是 VoIP 应用程序,我认为如果我使用 PushKit,App Review 会拒绝它

最佳答案

和你描述的完全一样,没有什么要补充的。如果该应用程序被终止,除了 PushKit 之外,您无法处理静默推送通知,但如果您使用 PushKit,如果您的应用程序未实现 VoIP,则无法通过审核。

您最好的选择是发送带有通用文本的推送通知(例如“您有一条新消息”),而不是静默推送通知,这将作为应用程序被终止的情况的回退。如果应用程序未被终止,您可以丢弃/删除远程通知,下载和解密消息并显示包含实际消息的本地通知。如果应用程序被终止,将显示带有通用文本的远程通知,并且至少会通知用户有一条新消息。

将此行为添加到您应用的常见问题解答中,以鼓励用户不要终止该应用。无论如何都没有理由在 iOS 上执行此操作,因此如果用户终止了某个应用程序,他不应该指望它会按预期运行。

关于为此滥用 PushKit 的补充: 如果您将某项功能/服务滥用于本不应用于的用途,您的应用可能会被拒绝。因此,如果您启用了 VoIP 后台模式,但您的应用程序不提供任何 VoIP 功能,这是很明显的。 来自App Store Review Guidelines :

2.16 Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.

关于iOS - 静默推送后我需要处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307082/

相关文章:

ios - 对象引用未设置到对象的实例 - Select 语句 Sqlite Xamarin iOS

android - 在 Android Studio 中通过 firebase 发送通知的 Gradle 设置问题

ios - parse.com action-loc-key 推送通知

ios5 - Apple 推送通知服务限制

ios - 如何在 iPhone 上使用 SSH

ios - Swift 中的核心数据通知

ios - ContainerView 和 ViewController 之间的数据

amazon-web-services - 亚马逊SNS移动推送: send message to a specific user

android - Firebase 消息传递 : default notification channel doesn't work

objective-c - 如何在Voip App中使用带有背景的pushkit