2

我正在使用 Android 的 Branch lib 生成链接,然后通过短信发送。如果用户没有在手机上安装应用程序,您的链接会正确传输到 Play 商店(仪表板中的链接)。安装并运行应用程序后,它会按预期从链接接收所有数据。

但是,如果我已经在手机上安装了该应用程序,则按该链接不会打开该应用程序,而是将我再次重定向到 Play 商店。如果我在那里按下“打开”按钮,应用程序会收到信息,但如何直接从浏览器运行应用程序?我看到了相同库的 iOS 实现,它完美地工作 - 即当我拥有应用程序并按下链接时,它会打开应用程序而无需将我发送到商店。

也许我在清单中的声明中做错了什么?

提前致谢,

卡林

4

1 回答 1

3

Chrome 需要一个与您的 Android 清单中定义的内容相匹配的意图字符串,才能正确打开在您的设备上找到的应用程序。如果出现问题,Chrome 将不会打开该应用程序。如果您使用 Branch 进行深度链接,则需要确保以下匹配:

TL;DR,确保这些在分支仪表板和清单上匹配

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

更长的解释是,Branch 获取与您的帐户相关联的链接,并构造一个如下所示的 Intent 字符串:

intent:
HOST/URI-path // Optional host 
#Intent; 
  package=[string]; 
  action=[string]; 
  category=[string]; 
  component=[string]; 
  scheme=[string]; 

结尾;

当 Branch 进行重定向时,我们会从您的帐户中提取方案和包,并假设您已设置android:hostopen

意图://打开#意图;方案=方案;包=包;结束"

并把它放在里面window.location。如果您的仪表板或包上的注册方案不匹配,或者open未在android:host密钥中指定,那么您将被带到 Chrome。

android.intent.category.BROWSABLE将以下内容指定为类别过滤器也很重要。有关意图字符串的更多信息,请点击此处

于 2015-06-24T18:33:16.097 回答