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