动态链接似乎无法保存到安装过程中



My MainActivity以这种方式管理深度链接

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
intent?.let {
checkDynamicLink(intent)
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener(this) { dynamicLink ->
dynamicLink?.link?.let { deepLink ->
viewModel.postDeepLink(deepLink)
}
}
}

viewModel是共享的;一旦用户登录,归属片段就会获取深度链接,NavController就会处理它。

它在调试时以及通过Android Studio安装应用程序的生产版本时都能完美工作(无论是否缩小(。当我通过播放商店安装制作应用程序时,就会出现问题。打开动态链接时,将打开Play Store;我安装应用程序,然后点击";继续";(事实上,我看到的是"继续"而不是"打开",这应该意味着它识别出打开应用程序时有一个动态链接(。我打开应用程序,然后登录;当它到达主片段时,显然没有需要管理的深层链接。它应该打开一个片段,但它没有。

更奇怪的是:如果我通过动态链接安装应用程序,然后通过启动器(而不是播放商店上的"继续"按钮(打开它,则动态链接和深度链接得到了正确管理。

这似乎是Play Store的错误。我的问题是,我忘了什么吗?

以下是清单中活动的意图过滤器:

<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="@string/firebase_dynamic_links_domain_uri_prefix"
android:scheme="https" />
<data
android:host="@string/firebase_dynamic_links_domain_uri_prefix"
android:scheme="http" />
</intent-filter>

查看firebase动态链接文档,有几种方法可以设置动态链接。

我建议您检查动态链接上的包名称是否设置为与生产应用程序的包名称匹配。

问题与AndroidManifest以及如何声明活动有关:

<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="@string/firebase_dynamic_links_domain_uri_prefix"
android:scheme="https" />
<data
android:host="@string/firebase_dynamic_links_domain_uri_prefix"
android:scheme="http" />
</intent-filter>
<nav-graph android:value="@navigation/nav_graph" />
</activity>

nav_graph标签导致动态链接由应用程序自动管理,因此当应用程序通过播放商店启动时,动态链接的深度链接会自动管理,但用户没有登录,因此片段不会显示(因此显然没有管理(。

最新更新