android - FCM 后台通知深度链接不适用于 android

标签 android firebase-cloud-messaging android-notifications

我尝试设置 FCM 通知以使用深层链接。如果应用程序在前台,那么我们可以使用 FirebaseMessaginService 处理通知然后一切正常。当应用程序被终止并且 Firebase 的后台服务显示通知时,问题就出现了。而且我只是找不到让深度链接开箱即用的方法。当前的解决方案是将深层链接放入 extras 中,并在应用启动时检查 Intent 。但是最好跳过这个并让通知传播正确的深层链接。
所以这里是 Activity 的 list 。深层链接上升 <nav-graph .... />

        <activity
        android:name="com.*****.******.view.main.MainActivity"
        android:exported="true"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
        <nav-graph android:value="@navigation/services_graph" />
        <nav-graph android:value="@navigation/infobox_graph" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
当然还有服务的设置
        <service
        android:name=".usecase.notifications.OscaPushService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
这对于 FCM 设置应该足够了吧? (当然 key 也设置好了)
现在我尝试使用此有效负载发送深层链接:
                "androidNotification":{
                "click_action": "example://infobox/"
            },
然后点击通知什么都不会发生。 ActivityTaskManager将打印以下消息,仅此而已:
I/ActivityTaskManager: START u0 {act=example://infobox/ flg=0x14000000 pkg=com.*****.*****.** (has extras)} from uid 10374 (replaced pkg with stars)
这与使用 adb shell 命令启动深度链接不同。
adb shell am start -d example://infobox/   
会打印
I/ActivityTaskManager: START u0 {dat=citykey://infobox/ flg=0x10000000 cmp=com.****/com.******} from uid 2000
以这种方式启动深层链接实际上会起作用。
知道为什么会这样吗?

最佳答案

从日志来看,有一个主要区别。一个有效的有“数据”,这是你从 adb 开始的那个。不起作用的有一个“ Action ”,它不同于“数据”。您需要在“androidNotification”中传递“data”而不是“click_action”。基本上,“click_action”适用于 Intent.setAction()而您指定的 adb 命令执行 Intent.setData() .这两个是不同的。
无论如何,您可能应该对这些使用数据通知,即使您的应用程序处于前台或被杀死,它也会触发您的服务。然后,您可以直接从应用程序正确创建通知。

关于android - FCM 后台通知深度链接不适用于 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70594016/

相关文章:

android - 我可以添加多个 AsyncTask 并同时执行吗?

firebase - Google Firebase Admin SDK 服务帐户已过期?

ios - 有没有办法直接在 iOS Today 扩展中处理远程通知?

android - 应用程序终止时 FCM 推送通知 FLUTTER

android - 如何知道 Android 中 Firebase 通知中的主题名称?

android - 根据编译器、Android 的说法,FragmentTransaction 对象的实例化是不可能的

android - 使用按钮启用/禁用振动和声音的开关

java - 在房间中的实体之间创建关系

java - 总是从通知 Intent android获取数据为空

android - 已发布错误通知 - 无法为 : StatusBarNotification 展开 RemoteViews