强制退出应用程序在后台模式下无提示通知

时间:2019-04-04 18:31:19

标签: ios swift push-notification apple-push-notifications uiapplicationdelegate

我的问题是:当用户强行退出(刷掉)应用程序时,我只是无法使无提示通知起作用!

我想以下事实是:如果出现以下情况,无声推送(使用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平台上绝对没有解决方案,则可以认为它是重复的。

2 个答案:

答案 0 :(得分:3)

您问:

  

或者[是否]苹果只是这样设计,当用户强制退出某个应用程序时,这意味着该应用程序必须完全关闭并具有推送远程通知的功能?

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

  

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

答案 1 :(得分:0)

不可能。当应用程序处于后台或挂起模式时,您将有30秒的时间执行某些操作。但是,如果用户手动杀死应用程序,则功能didReceiveRemoteNotification永远不会调用。

更新:

  

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