当应用程序不在前台时忽略 NavDeepLinkBuilder 目标

ozn*_*cro 8 android android-notifications android-architecture-navigation

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

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

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

但是,当应用程序不在前台时,通知只会导航到 MainActivity 而忽略在 NavDeepLinkBuilder 中设置的目标。

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

Mar*_* RS 0

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

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

请参阅: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>
Run Code Online (Sandbox Code Playgroud)

这使我能够在我的HomeActivity中提取通知信息