11
iOS推送通知:当应用程序在后台运行时,如何检测用户是否轻按了通知?
关于此主题有很多stackoverflow线程,但是我仍然没有找到一个好的解决方案。 如果该应用程序不在后台,则可以签launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]入application:didFinishLaunchingWithOptions:呼叫以查看是否已从通知中打开该应用程序。 如果应用程序在后台运行,则所有帖子都建议使用application:didReceiveRemoteNotification:并检查应用程序状态。但是,正如我进行的实验(以及该API的名称所暗示的那样),该方法在收到通知时被调用,而不是被窃听。 因此,问题是,如果启动了应用程序,然后又将其后台运行,并且您知道收到了通知application:didReceiveNotification(此时application:didFinishLaunchWithOptions:将不会触发),那么您如何知道用户是否通过轻按通知或仅轻按应用程序图标?因为如果用户点击通知,则期望打开该通知中提到的页面。否则不应该。 我可以使用handleActionWithIdentifier自定义操作通知,但是只有在点击自定义操作按钮时才会触发,而不是在用户点击通知主体时触发。 谢谢。 编辑: 在阅读下面的一个答案之后,我想通过这种方式可以澄清我的问题: 我们如何区分这两种情况: (A)1.app进入后台;2.收到通知;3.用户点击通知;4.应用进入前台 (B)1.app进入后台;2.收到通知;3.用户忽略该通知,稍后点击应用程序图标;4.应用进入前台 application:didReceiveRemoteNotification:在两种情况下都在步骤2中触发了因为。 或者,应该application:didReceiveRemoteNotification:仅在步骤3中为(A)触发,但是我以某种方式配置了我的应用程序错误,因此我在步骤2中看到了它?