当应用程序不在前台时,将忽略导航深度链接构建器目标



我正在使用NavDeepLinkBuilder为在特定目的地打开应用程序的推送通知生成挂起的意图。

return NavDeepLinkBuilder(this)
.setComponentName(MainActivity::class.java)
.setGraph(R.navigation.main_navigation)
.setDestination(destinationId)
.setArguments(args)
.createPendingIntent()

当应用程序位于前台时,通知将导航到 NavDeepLinkBuilder 构建的待处理意图中设置的目标。 👍

但是,当应用程序不在前台时,通知将仅导航到主活动,并忽略在导航深度链接构建器中设置的目标。 👎

注意:待处理的意向和通知内置于扩展 FirebaseMessagingService 的服务中。

是的,如果您使用 Firebase,您可能会面临这种行为。问题是,当您的应用在后台运行时,您的onMessageRecived()方法永远不会触发。在这些情况下,您不会以onMessageRecived()而是以MainActivity()方式收到 Firebase 消息。只需在 onCreate(( 方法中检查您的意图,正如我在编辑块中我自己的问题中所描述的那样

当应用在后台时,通知点击最终的行为会有所不同。

默认情况下,用户点击通知会打开应用启动器。在这些情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的意图的附加内容中传递。

请参阅:https://firebase.google.com/docs/cloud-messaging/android/receive#backgrounded

您最终将不得不查看主要活动的意图附加功能以获取通知信息。在某些情况下,如果您在推送通知中添加了click_action,则需要添加到意向过滤器列表中。

我将以下意图过滤器操作添加到我的主要活动意图过滤器块中:

<intent-filter>
<action android:name=".HomeActivity" />
<category android:name="android.intent.category.DEFAULT" />
... Rest of your actions
</intent-filter>

这允许我在我的家庭活动中提取通知信息

最新更新