Android深度链接:对应用程序和游戏商店使用相同的链接

Android深度链接:对应用程序和游戏商店使用相同的链接,android,deep-linking,Android,Deep Linking,我有一个网站,使用户可以进行搜索查询。查询可能需要一些时间才能完成(几分钟到几天),我想让用户能够下载Android应用程序并在那里接收答案,方法是发送一封带有用户链接的电子邮件 我希望无论用户是否安装了应用程序,这种机制都能起作用;换言之: 如果用户拥有应用程序,则应使用包含标识符参数的应用程序打开该应用程序 如果用户没有,则应在应用程序页面上打开play store(例如https://play.google.com/store/apps/details?id=com.bar.foo&re

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

我希望无论用户是否安装了应用程序,这种机制都能起作用;换言之:

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


是否有一种方法可以形成一个链接,用一个参数打开一个Android应用程序,无论该应用程序是否已安装,该链接都会起作用?

此解决方法可能会起作用:

  • 在服务器端,创建一个指向GooglePlay的重定向规则。例如,
    https://www.foo.com/bar/BlahBlah
    将重定向到
    https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah

  • 在应用程序中:

  • 
    
    现在,如果安装了该应用程序,将捕获URL并解析路径以提取
    BlahBlah
    部分。如果未安装应用程序,按链接将用户重定向到具有参考URL的Play store

    注:

    • /bar/BlahBlah
      已转换为
      &referer=BlahBlah
      ,因为play store接收URL参数,而深度链接机制使用URL路径(据我所知)

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

    有一种方法可以做到这一点,通过分支度量(完全公开,我在那里工作)


    基本上,您可以在Branch dashboard上设置URI方案,创建一个包含您想要传递的数据的链接(在本例中,是查询参数,但由您决定),SDK有一个回调方法(通过单击Branch链接安装或常规的deeplink)提供所述查询参数。

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

    X:应用程序的程序包名称

    Y:应在应用程序清单中定义的深度链接方案。 (请参阅) 在这里,他们将此URL用作示例:“”,因此Y应替换为此URL

    Z:可以是任何你想通过Google Play传递给应用程序的数据。 请注意,您传递的任何数据都不应以“&”分隔,因为原始参数本身是以“&”分隔的

    根据我的实验,浏览器可以理解这个URL,它会根据包名和深度链接方案将你重定向到应用程序。否则,它会将你带到Google Play


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

    这个问题非常古老,但也非常流行,因此绝对值得知道的是,现在Firebase正式支持此用例

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

    它建立在应用程序链接之上,因此您仍然需要与以前相同的
    intent过滤器

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

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


    有关所有详细信息和使用该用例设置的信息,请转到此处:

    这不可能在Play Store中实现。如果您提供来自您自己服务器的下载链接,则您可能能够提供包含所需标识符的自定义编译APK下载。即使使用firebase?@DineshVG也不确定。此后发生了很大变化,我很高兴我不再做那个项目了。你知道即使没有立即从play store打开该应用程序,该参数是否也会传递给该应用程序吗?很好的解释。谢谢@adam matancould你也可以看看这个:谢谢!根据本文:“深度链接的URI方法限制性很强,未经重大修改不推荐使用,因为如果未安装应用程序,它将显示错误消息。"你的回答与任何建议相矛盾?我有一个疑问,为什么我需要将其发送到我的服务器,为什么我不能简单地使用google play store链接作为深度链接?顺便说一句,我对深度链接是完全陌生的。你知道即使没有立即从play store打开该应用程序,该参数是否会传递到该应用程序吗?是的,这就是为什么p linking’是。只要点击一个链接,数据就会在2小时内通过播放存储。
    在2小时内
    这是一个非常有趣的信息!谢谢!是否有来源提到这个时间范围,以防它发生变化?Branch.io列在我使用的web内容过滤系统上。我不确定如果这个黑名单合法与否,但它似乎是你可能想要调查的东西。有关于这个的官方文档吗?@UtsavGupta:没有,这是我自己的实现。我还没有创建一个。有没有办法将它与
    text/plain
    一起使用?我想实现同样的行为,但使用WhatsApp浏览器共享它支持吗?@UtsavGupta:这是官方文件。
    intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=android.intent.action.VIEW;package=com.android.vending;end";