强制退出应用程序的后台模式中的静默通知

问题描述 投票:0回答:2

我的问题是:当用户强制退出(刷掉)应用程序时,我无法使静默通知工作!

我想以下是一个事实:如果应用程序被用户强行退出(刷掉),静音推送(使用content-available:1)将不会触发application(_:didReceiveRemoteNotification:fetchCompletionHandler:)或任何其他方法(它不会启动应用程序)!谁能证明这个错了?

我已确定已启用后台模式:远程通知。

但是,如果非静默通知对我不起作用怎么办?我需要沉默的,我需要能够在展示它之前运行一些检查!如果我想从远程服务器收到通知后检查正确的用户是否登录到我的应用程序,该怎么办? (因为我不能保证当他退出时他成功让服务器知道它,所以我认为服务器不确定)

在我的情况下采取什么样的正确方法?

关于类似的事情有很多问题,但涉及的人不多,我想知道为什么?我不相信我有这么罕见的情况。也许我解决这类问题的基本方法是错的?它根本不是Android平台上的问题!

我使用FCM作为发送通知的中心点,所以如果你说PushKit可以解决我的问题,那么FCM不支持VoIP证书太糟糕了。但是,我想知道,PushKit真的可以解决这个问题吗?或者Apple只是这样设计它,当用户强制退出应用程序时,这意味着这个应用程序必须完全关闭它能够推送远程通知?!

我不认为这是Firebase silent notification does not start up a closed iOS app的副本,因为我要问的是,如果要检查通知所针对的用户是否与登录到应用程序的用户相对应,那将是什么解决方案?如果事实证明在iOS平台上完全没有解决方案,则可以认为它是重复的。

ios swift push-notification apple-push-notifications uiapplicationdelegate
2个回答
4
投票

你问:

或者[有] Apple只是这样设计它,当用户强制退出应用程序时,这意味着这个应用程序必须完全关闭其推送远程通知的能力?

是的,这就是它的设计方式。 App Programming Guide for iOS: Understanding When Your App Gets Launched into the Background说:

在大多数情况下,系统在用户强行退出后不会重新启动应用程序。位置应用程序是一个例外,它在iOS 8及更高版本中被用户强行退出后重新启动。但是,在其他情况下,用户必须明确启动应用程序或重新启动设备,然后系统才能将应用程序自动启动到后台。在设备上启用密码保护后,系统不会在用户首次解锁设备之前在后台启动应用程序。


0
投票

不可能。当应用程序处于后台或暂停模式时,您将有30秒的时间做一些事情。但如果用户手动杀死应用程序func didReceiveRemoteNotification永远不会调用。

UPD:

当iOS设备收到静默通知时,系统会在后台唤醒您的应用并调用其应用委托的应用程序(_:didReceiveRemoteNotification:fetchCompletionHandler :)方法。您的应用程序有30秒的挂钟时间来执行任何任务并调用提供的完成处理程序。有关更多信息,请参阅处理通知和与通知相关的操作。

© www.soinside.com 2019 - 2024. All rights reserved.