代号一 iOS 远程通知

Posted

技术标签:

【中文标题】代号一 iOS 远程通知【英文标题】:Codename One iOS Remote Notifications 【发布时间】:2021-01-21 10:49:27 【问题描述】:

过去两周,我们一直在努力寻找可靠的解决方案,以尝试将我们的应用数据与后台服务器同步。我们已经尝试过后台获取机制,但由于 ios 对其运行时间的限制,它不是一个可行的解决方案。

iOS 确实提供了我们希望使用的远程通知 (https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app?language=objc),因为我们可以在 android 上使用相同的机制。

问题在于,在发送类型 2 通知时,CN1 仅在用户将应用程序置于前台时才发送通知。

在 Android 上,我看到 android.background_push_handling 的构建提示允许将通知发送到应用程序,即使它在后台也是如此。

是否有类似的构建提示可以用于 iOS?

如果没有,有没有办法覆盖 application:didReceiveRemoteNotification:fetchCompletionHandler: 在通知到达时触发的方法,以便我们可以将其转发到我们的应用程序?

【问题讨论】:

从历史上看,iOS 在后台推送方面非常有限,但这可能会有所改变。我们需要调查一下。 您有什么其他建议可以同时尝试,因为这会阻碍我们的一些项目? 原来我们已经在推送服务器中支持content-available: 1模式,并且在发送#2类型的推送消息时默认使用它。我们的委托中仍然缺少回调,因此它可以工作,但这应该是一个相对容易的修复。请提出问题,我们将在接下来的几周内尝试解决:github.com/codenameone/CodenameOne/issues 【参考方案1】:

您可以为此目的使用静默推送通知。要发送静默推送通知,您只需在通知正文中包含"content-available" : 1"。更多信息在这里:Apple docs-silent push notifications

您应该记住,这仅在您的应用处于后台时有效,在应用被终止时无效。当应用程序被终止时,唯一的解决方案是标准推送通知,除非您的应用程序具有 VoIP 功能,在这种情况下,您可以使用 PushKit 框架(如果您在没有 VoIP 功能的应用程序中使用它,您将无法通过 AppStore )。

【讨论】:

感谢他的信息。我们正在使用一个名为 Codename One 的第三方 Java 库来进行我们的应用程序开发,因此我们对核心 iOS 功能有点抽象

以上是关于代号一 iOS 远程通知的主要内容,如果未能解决你的问题,请参考以下文章

iOS推送通知和远程通知的区别?

iOS开发--本地通知与远程通知

向 IOS 问题推送通知 CodeName One

缓存所有远程通知 - iOS

IOS启动时如何区分通知是本地通知还是远程通知

如何清除 iOS 的远程推送通知?