22

我们有一个 android 应用程序,当用户被重定向到自定义协议时启动。如果应用程序未安装在他们的设备上,我们希望用户重定向到该应用程序的 google/play 商店。

对于 iOS,我们使用类似这样的方法:是否可以为 iPhone 应用程序(如 YouTube 和 Maps)注册基于 http+域的 URL 方案?...但是这在android上不起作用。

这是基本的工作流程:

  1. 用户点击我们网站上的链接
  2. 用户被重定向到customProtocol://site.com?some=params
  3. 如果安装了应用程序,则设备知道在访问 customProtocol:// url 并且应用程序启动时要做什么......但是,如果未安装应用程序,android 只会给出一个页面不可用的错误页面;上面针对 iOS 的解决方案似乎不起作用。

关于我们如何在android上实现这一点有什么想法吗?在android上是不可能的吗?

4

2 回答 2

23

关于我们如何在android上实现这一点有什么想法吗?

不使用“自定义协议”(或更准确地说,是“自定义方案”)。Android 上的模式是让您使用您控制的 URL。

例如,条形码扫描仪应用程序为其主要扫描活动定义了以下内容

  <!-- 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 商店

于 2012-11-22T19:10:05.417 回答
3

您可以定义一个简单地重定向到 Google Play 中的应用程序页面的服务器端 URL,并在意图过滤器中使用该 URL以被您的应用程序捕获:

  • 如果您的应用程序已安装,您为其定义意图过滤器的活动将被打开。
  • 如果您的应用程序未安装,则不会找到意图过滤器,并且将打开浏览器并将用户重定向到 Google Play(提示他们是否要打开 Play 商店或在浏览器中继续)。
于 2012-11-22T19:13:58.120 回答