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

Posted

技术标签:

【中文标题】iOS - 我需要静默推送后的处理时间【英文标题】:iOS - i need processing time after silent push 【发布时间】:2015-10-23 16:18:19 【问题描述】:

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

但是,ios 不允许处理已终止应用的处理时间,仅适用于前台应用或仍在应用切换器中的应用。我该如何解决这个问题?

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

【问题讨论】:

【参考方案1】:

和你描述的完全一样,没有什么要补充的。如果应用被杀,除了 PushKit 之外,你无法处理静默推送通知,但如果你使用 PushKit,如果你的应用没有实现 VoIP,就不会通过审核。

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

将此行为添加到应用的常见问题解答中,以鼓励用户不要杀死应用。无论如何,在 iOS 上没有理由这样做,所以如果用户杀死一个应用程序,他不应该期望它按预期工作。

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

2.16 多任务应用程序只能将后台服务用于其预期目的:VoIP、音频播放、位置、任务完成、 本地通知等。

【讨论】:

这就是我最终要做的。但是我发现很多用户杀死应用程序并没有这样做,只是为了清理托盘。 @HamzahMalik,是的,不幸的是,很多用户出于这个原因杀死了应用程序。我认为苹果应该以某种方式解决这个问题。这里有一篇关于这个问题的有趣文章:lifehacker.com/… 他们应该只允许 Pushkit 用于非 VoIP 应用程序。他们不必担心开发人员滥用它,因为无论如何他们都会审查应用程序!此外,切换任务不应该让杀死应用程序变得如此容易,发生的事情应该很明显 大家好,如果我们要在非 VoIP 应用程序中使用 pushkit,那么 Apple 不接受该应用程序? @SaraMichel:很可能是的,请参阅我的更新答案。

以上是关于iOS - 我需要静默推送后的处理时间的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中处理静默推送通知的最佳方法是啥

iOS - 当应用程序被用户强制退出时处理静默推送通知

iOS 11.2.6 中未处理静默推送通知

iOS的FCM静默推送通知结构?

当应用程序在后台时,使用 React Native 的静默 iOS 推送通知

静默本地通知 IOS