Android深层链接:为应用和Play商店使用相同的链接

时间:2015-02-26 13:48:36

标签: android deep-linking

我有一个网站,可以让用户进行搜索查询。查询可能需要一些时间才能完成(几分钟到几天),我希望用户能够通过发送带有用户链接的电子邮件来下载Android应用并在那里收到答案。

无论用户是否安装了应用程序,我都希望这种机制能够正常运行;换句话说:

  • 如果用户有应用程序,则应使用包含标识符参数的deep link打开它。
  • 如果用户没有,则应在应用页面上打开Play商店(例如https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah),让用户安装它,然后使用标识符参数打开应用。

enter image description here

有没有办法形成一个链接,打开带有参数的Android应用程序,无论是否安装了该应用程序都可以使用?

4 个答案:

答案 0 :(得分:84)

此解决方法可能有效:

  1. 在服务器端,创建一个重定向规则以进行Google Play。例如,https://www.foo.com/bar/BlahBlah将重定向到https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah

  2. 在应用中,register the server side link as a deep link

  3. <data android:scheme="https"
              android:host="www.foo.com"
              android:pathPrefix="/bar" />
    

    现在,如果安装了应用程序,将捕获URL并解析路径以提取BlahBlah部分。如果未安装应用程序,则按链接会将用户重定向到带有引用URL的Play商店。

    enter image description here

    注意:

    • /bar/BlahBlah已转换为&referrer=BlahBlah,因为Play商店收到一个URL参数,深层链接机制与URL路径一起使用(据我所知)

答案 1 :(得分:13)

您可以尝试使用此方案(发送给用户):

intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=android.intent.action.VIEW;package=com.android.vending;end";

X:应用程序的包名称

Y:应在App的清单中定义的深层链接方案。 (请参考this) 在这里,他们使用此网址作为示例:&#34; http://www.example.com/gizmos&#34;因此,Y应该被此URL替换。

Z:可以是您想通过Google Play传递给应用的任何数据。 请注意,您传递的任何数据都不应该是&#39;&amp;&#39;分开是因为原始参数本身就是&#39;&amp;&#39;分离。

根据我的实验,浏览器会理解此URL,并根据包名称和深层链接方案将您重定向到App。否则它会带您进入Google Play。

PS:Google Play会向应用广播。因此,请确保您在接收器中收到广播。

答案 2 :(得分:1)

这个问题已经很老了,但也很受欢迎,因此,现在值得一提的是,Firebase正式支持了该用例,Firebase Dynamic Links

它仅支持打开应用程序并延迟深层链接,这意味着在安装应用程序后,当应用程序启动时,您可以检索用于安装应用程序的数据(链接)。

它建立在App Linking之上,因此您仍然需要与以前相同的intent-filter

简而言之,您需要添加implementation 'com.google.firebase:firebase-dynamic-links:VERSION'并从FirebaseDynamicLinks类的实例检索链接。

当然,您需要使用Firebase控制台中生成的链接更改网站上的链接,但是好消息是这些链接是“动态的”(顾名思义),因此它们可在所有系统上使用。

有关所有详细信息和使用案例的设置,请访问:https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app

答案 3 :(得分:0)

如果您想自己构建,那么Adam的解决方案非常好。

分支指标(完全披露,我在那里工作)有open-source SDK这样做。

基本上,您在分支仪表板上设置URI方案,创建一个包含您要传递的数据的链接(在这种情况下,查询参数,但您决定),并且SDK有一个带回调的方法你说查询参数(通过点击分支链接通过安装或常规深层链接)。