关于此主题有很多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中看到了它?