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

Ada*_*tan 52 android deep-linking

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

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

  • 如果用户有应用程序,则应使用包含标识符参数的深层链接打开它.
  • 如果用户没有它,它应该在应用程序页面上打开游戏商店(例如https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah),让用户安装它,并使用identifier参数打开应用程序.

在此输入图像描述

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

Ada*_*tan 94

此解决方法可能有效:

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

  2. 在应用程序中,将服务器端链接注册为深层链接:

<data android:scheme="https"
          android:host="www.foo.com"
          android:pathPrefix="/bar" />
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

笔记:

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

  • 即使没有立即从 Play 商店打开,您是否知道该参数是否会传递给应用程序? (3认同)
  • 我在这里有一个疑问,为什么我需要将其发送到我的服务器,为什么我不能简单地使用Google Play商店链接作为深层链接?我完全不了解深度链接。 (2认同)

Shi*_*xit 13

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

intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=android.intent.action.VIEW;package=com.android.vending;end";
Run Code Online (Sandbox Code Playgroud)

X:应用程序的包名称

Y:应在App的清单中定义的深层链接方案.(详情请参阅)在这里,他们都用这个网址为例:" http://www.example.com/gizmos ",因此ÿ应该由这个URL所取代.

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

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

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

  • @UtsavGupta:这是官方文档。https://developer.chrome.com/multidevice/android/intents (2认同)

mic*_*brz 5

这个问题很老但也很受欢迎,所以绝对值得知道的是,现在这个用例得到了 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