Branch.io android 中的深层链接即使安装了应用程序也会打开 Play 商店

Branch.io deeplink in android opens Play Store even when app is installed

在安装应用程序 android 上测试 deeplinks 时,link 打开 Play 商店。

当我点击 'Open' 时,应用程序确实在正确的位置打开,即 deeplink 确实有效。但是,我不希望用户无缘无故地浏览 Play 商店。

只与 Branch.io 打过一次电话,我不是很熟悉它的架构,但是,我相信这取决于你的应用有自己的 URL 方案,例如 twitter://或脸书://。

幸运的是,有一个cordova plugin。听起来 Branch 正在 link 上执行 GET,但没有收到任何返回信息,因此它会将您重定向到应用程序的 Play 商店 URL。

如果您已经安装了此插件,我建议单独测试该插件以确保您已正确配置它(尝试测试您自己生成的 link)。如果仍然无法正常工作,请查看 Branch 是否已正确配置此应用 URL。

如果仍然失败,我会就一些 cordova 示例代码和故障排除选项联系 Branch:我知道他们在与他们交谈时特别提到了它。

Chrome 的根本问题(无论它是本机 Android 应用程序还是 Cordova)是,除非您的 AndroidManifest.xml 与意图字符串 Chrome 完全匹配需要,它会默认到 Play 商店,而不是选择尝试打开应用程序。而且它经常这样做。

我之前已经在 上回答了关于您需要什么的问题。如果你不想去那里,我会复制并粘贴 TL;DR 在这里:

确保这些在分支仪表板和清单上匹配:

  • 分支仪表板上的包名称与您的应用构建的包名称相同
  • android:host="open" on Activity,因为 Branch 将意图字符串格式化为 scheme://open
  • 在 Branch 上注册的 URI 方案与在您的 AndroidManifest.xml
  • 中找到的相同
  • 同Activity有如下属性:android.intent.category.BROWSABLE

我就这个问题联系了 Branch.io 的支持人员。这是我从他们那里得到的正确答案:

The issue you described is one I've run into. Because we don't know (with 100% accuracy) whether a user already has MyApp installed until they open the app from a Branch link, we wait until that's happened before deeplinking them directly into the app (and in the meantime, we send them to the app store).

There is, however, a setting that you can use to change this behavior. In settings/link settings in your Branch dashboard, there's a checkbox at the top of the page with the text "Always try to open app." If you check this box, we will automatically fire your URI scheme when a link is clicked, which means that even users who haven't opened MyApp from a Branch link (but who do have the app installed) will be deeplinked.

(我用 'MyApp' 替换了我的应用名称)

在分支的 LinkProperties 对象中使用 控制参数 $android_deeplink_path 并把值 <your custom host>abcd.app.link。 然后它会立即重定向到您的应用程序,Play商店将不会打开。