Android - 如果应用未安装(从网站启动),则重定向到商店

22

我们有一个安卓应用程序,当用户被重定向到自定义协议时启动该应用程序。 如果设备上没有安装该应用程序,我们希望将用户重定向到Google/Play商店以安装该应用程序。

对于iOS,我们可以使用类似这样的东西:Is it possible to register a http+domain-based URL Scheme for iPhone apps, like YouTube and Maps?... 但是在安卓上无法正常工作。

以下是基本工作流程:

  1. 用户在我们的网站上点击链接
  2. 用户被重定向到 customProtocol://site.com?some=params
  3. 如果设备上已安装应用程序,则当访问 customProtocol://url 时设备知道该怎么做并启动应用程序... 然而,如果设备上未安装该应用程序,安卓只会给出“页面不可用”的错误页面;在 iOS 上的解决方案似乎在安卓上无法使用。

你有什么想法可以在安卓上实现这个功能吗? 在安卓上不可能吗?


尝试阅读这个:https://dev59.com/VFPTa4cB1Zd3GeqPnN5E - thepoosh
@rat,你找到这个问题的适当解决方案了吗? - amit karsale
我也遇到了同样的问题,不过这个解决方案帮了我一个大忙:https://dev59.com/emw05IYBdhLWcg3weBhF - amit karsale
你有没有找到这个问题的解决方案,@rat? - Manu
是的,我们最终采用了下面描述的意图方法,我认为这是 Android 的正确解决方案。我将其标记为已接受。 - rat
2个回答

23

你有没有想过,我们如何在安卓平台上实现这个功能?

不能使用“自定义协议”(或更正确地说,“自定义方案”)来实现。在安卓平台上,您需要使用由您自己控制的URL。

例如,Barcode扫描器应用程序对于其主要扫描活动有以下定义:

(参见此处)

  <!-- Allow web apps to launch Barcode Scanner by linking to http://zxing.appspot.com/scan. -->
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="http" android:host="zxing.appspot.com" android:path="/scan"/>
  </intent-filter>

然后,任何指向http://zxing.appspot.com/scan的链接将执行以下两种操作之一:

  1. 如果在 Android 设备上的浏览器中点击链接且已安装了条形码扫描器,则用户可以选择显示应用程序或显示与链接相关联的网页

  2. 如果在其他地方点击链接(没有该应用程序的 Android 设备、其他移动设备、桌面、笔记本电脑等),则浏览器会打开该 URL 的网页,在其中您可以进行任何想要的操作,包括可选地重定向到 Play Store


有趣的是,这是否正确地说,在1.中没有办法防止选择器对话框被显示,同时支持如果应用程序未安装则打开Play商店的情况? - Matthew
1
@Matthew:正确。可以处理URL的所有内容都会出现在选择器中,其中将包括浏览器(或浏览器)和您的应用程序。自定义方案方法避免了这种情况,但代价是失去了第2点,并且可能会与其他人的自定义方案发生冲突。 - CommonsWare
我只是在测试这个功能,因为我自己需要它,但是在安装了条形码扫描应用程序后,当我访问http://zxing.appspot.com/scan时,它只显示网页而不是打开应用程序。我检查了Chrome是否设置为默认应用程序,但并没有。有什么建议吗? - Tim
1
没关系,我在这里阅读了(https://dev59.com/emw05IYBdhLWcg3weBhF),谷歌已经破坏了它,这似乎不再起作用。 - Tim
我也尝试安装了扫描仪应用程序,但它没有启动应用程序,而是显示网页。如果有人对这个问题有解决方案,请建议最佳答案... - user948319

3
您可以定义一个服务器端的URL,只需将其重定向到Google Play应用程序页面,并在意图过滤器中使用该URL以被您的应用程序捕获:
  • 如果已安装您的应用程序,则打开为其定义意图过滤器的活动。
  • 如果未安装您的应用程序,则找不到意图过滤器,浏览器将会被打开并且用户将被重定向至Google Play(询问他们是否要在Play商店中打开或继续使用浏览器)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接