当前位置: 首页 > 知识库问答 >
问题:

iOS推送通知:当应用程序处于后台时,如何检测用户是否点击了通知?

长孙鸿波
2023-03-14

关于这个主题有很多stackoverflow线程,但是我仍然没有找到一个好的解决方案。

如果应用程序不在后台,我可以在application:didFinishLaunchingWithOptions:调用中检查launchOptions[UIApplicationLaunchActionsRemoteNotificationKey],查看是否从通知中打开。

如果应用程序在后台,所有帖子都建议使用application:didReceivereMotentification:并检查应用程序状态。但正如我所做的实验(也正如这个API的名称所暗示的那样),当收到通知时会调用这个方法,而不是点击。

所以问题是,如果应用程序启动后后台运行,并且您知道从应用程序:didReceiveNotification收到通知(应用程序:didFinishLaunchWithOptions:此时不会触发),您如何知道用户是否通过点击通知或只点击应用程序图标从恢复应用程序?因为如果用户点击了通知,则期望打开该通知中提到的页面。否则就不应该了。

我可以为自定义操作通知使用处理动作与标识符,但是只有当用户点击自定义操作按钮时才会触发,而不是当用户点击通知的主体时。

谢谢

编辑:

在阅读了下面的一个答案后,我想通过这种方式我可以澄清我的问题:

我们如何区分这两种情况:

(a)1.app进入后台;收到2.notification;3.用户点击通知;4.应用程序进入前台

(B) 1.应用程序进入后台;2.收到的通知;3.用户忽略通知,稍后点击应用程序图标;4.应用程序进入前台

由于应用程序:DidReceivereMotentification:在两种情况下都在步骤2触发。

或者,是否应该在步骤3中仅为(A)触发application:didReceivereMotentification:,但我不知何故将我的应用程序配置错误,因此我在步骤2看到了它?

共有1个答案

秦博达
2023-03-14

好吧,我终于明白了。

在目标设置功能选项卡后台模式中,如果您选中远程通知,应用程序: didReceive远程通知:将在通知到达时被触发(只要应用程序在后台),在这种情况下没有办法告诉用户是否会点击通知。

如果您取消选中该框,application:didReceivereMotentification:仅当您点击通知时才会触发。

有点奇怪,选中此框将更改其中一个应用程序委托方法的行为。如果勾选该框会更好,苹果使用两种不同的委托方法来接收通知和点击通知。我认为大多数开发人员总是想知道通知是否被点击。

希望这对遇到这个问题的任何人都有帮助。苹果也没有在这里清楚地记录下来,所以我花了一段时间才弄清楚。

 类似资料:
  • 问题内容: 关于此主题,有很多stackoverflow线程,但是我仍然 没有找到一个好的解决方案。 如果该应用程序不在后台,则可以签 launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]入 application:didFinishLaunchingWithOptions:呼叫以查看是否已从 通知中打开该应用程序。 如果应用

  • 和分别用于: > 当应用程序在后台时用户点击通知时处理 当手机在前台时收到通知时进行处理。 但是,当应用程序在前台时,我们如何处理用户点击通知的事件?(例如,在点击通知时将用户带到相关的视图控制器)

  • 我看了很多问题和答案为同一问题。 我现在知道的是 当应用程序是后台应用程序时,不会调用“DidReceiveEmotonification” DidReceiveEmotentification只在应用程序位于前台时调用,或者当用户点击应用程序位于后台的通知时调用 应用程序:didFinishLaunchingWithOptions:在用户点击通知打开应用程序(如果应用程序被终止)时调用 我的情况

  • 我想知道是否有标志和参数可以通过单击通知托盘中的推送通知来告诉我用户是否启动了活动/应用程序。 我在 C2DM 接收器中的代码.java 我试着设定 但当该应用程序启动时,其意图中没有额外的内容。 我的mainactivity的onCreate函数中的代码 我得到的输出是onCreate - bundle没有额外的内容。所以多余的部分没有通过。 那么还有其他方法吗?在iOS中很容易

  • 我已经集成了Firebase,用于在flutter中推送通知。如果应用程序在前台,我已经显示了一个通知详细信息的对话框。我收到通知正确的Android。同样在iOS通知在后台和设备锁定时工作正常。我还启用了推送通知和后台抓取。对此有什么解决办法吗?有人面临过这样的问题吗? 我使用这个Firebase插件https://pub.dev/packages/firebase_messaging