关于这个主题有很多stackoverflow线程,但我仍然没有找到一个好的解决方案.
如果应用程序不在后台,我可以launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
通过application:didFinishLaunchingWithOptions:
电话查看它是否从通知中打开.
如果应用程序在后台,则所有帖子都建议使用application:didReceiveRemoteNotification:
并检查应用程序状态.但是当我进行实验时(以及此API的名称建议),此方法在收到通知时被调用,而不是被点击.
所以问题是,如果应用程序启动然后背景化,并且您知道收到通知application:didReceiveNotification
(此时application:didFinishLaunchWithOptions:
不会触发),您如何知道用户是通过点击通知还是仅通过点击来恢复应用程序应用图标?因为如果用户点击了通知,则期望打开该通知中提到的页面.否则它不应该.
我可以handleActionWithIdentifier
用于自定义操作通知,但这仅在轻触自定义操作按钮时触发,而不是在用户点击通知主体时触发.
谢谢.
编辑:
在阅读下面的一个答案之后,我想通过这种方式我可以澄清我的问题:
我们如何区分这两种情况:
(A)1.app转到后台; 2.收到通知; 3.用户点击通知; 4. app进入前台
(B)1.app转到后台; 2.收到通知; 3.用户忽略通知并稍后点击应用程序图标; 4. app进入前台
因为application:didReceiveRemoteNotification:
在步骤2中两种情况都被触发.
或者,应application:didReceiveRemoteNotification:
仅在步骤3中针对(A)触发,但我以某种方式将我的应用程序配置错误,所以我在第2步看到它?
我根据以下说明整合了Google SignIn(2.2):https: //developers.google.com/identity/sign-in/ios/start
它在设备上没有Google应用时有效.因此,Google SDK会打开一个网页视图,我可以在其中登录Google帐户,并使用有效的访问令牌调用GIDSignInDelegate方法didSignInForUser,而不会出现错误.
但是如果我安装了谷歌应用程序或Youtube应用程序,SDK将打开谷歌应用程序,我可以登录我的谷歌帐户,当我选择该帐户并重定向回来时,它会抛出一个错误:
"发生了潜在的可恢复错误.您可以再试一次."
无论我重试多少次都没有用过.
有没有人见过同样的问题?怎么可能出错?