我尝试了设置FCM通知以与深度链接一起使用。如果该应用程序在前台,则可以使用FirebaseMessaginService处理通知,然后一切正常工作。问题出现在应用程序被杀死时和来自Firebase的后台服务显示通知时。我只是找不到一种方法让深度链接直接生效。当前的解决方案是将deeplink放入extras并在应用程序启动时检查intent。但是更好的解决方法是跳过此步骤,让通知传播正确的deeplink。
这是活动清单的清单。 Deeplinks通过实现。
当然,服务的设置也是必须的。
这与使用adb shell命令启动deeplink不同。
以这种方式启动深度链接将实际上起作用。有任何想法为什么会发生这种情况?
这是活动清单的清单。 Deeplinks通过实现。
<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 设置,对吧?(当然,密钥也已设置)
现在我尝试使用以下有效负载发送深链接:
"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命令启动deeplink不同。
adb shell am start -d example://infobox/
将会打印出来
I/ActivityTaskManager: START u0 {dat=citykey://infobox/ flg=0x10000000 cmp=com.****/com.******} from uid 2000
以这种方式启动深度链接将实际上起作用。有任何想法为什么会发生这种情况?