如果已安装,请通过深层链接打开Android应用,如果未安装则回退到网络

时间:2015-08-31 15:30:15

标签: javascript android deep-linking

我正在尝试创建一个自动打开Android应用的网页,但仅限于安装了应用。如果不是,它应该重定向到另一个网页。

该应用已投放生产,并正在正确处理example://content?id=42等深层链接。链接的格式无法更改。

我已经尝试了什么

1)重定向和超时:

window.location.replace('example://content?id=42');
setTimeout(function() {
    window.location.replace = 'http://example.com/content?id=42';
}, 500);

适用于iOS,但对于Android,它会立即重定向到example://,从而为我提供ERR_UNKNOWN_URL_SCHEME。似乎不适合Android。

2)iframe方法。 Impossible in rencent Chrome versions。在三星浏览器中似乎也不起作用。

3)IntentsS.browser_fallback_url。效果很好但仅限Chrome。在Opera和三星浏览器中不起作用......除了Chrome 25 +之外,其他任何地方都没有。

5 个答案:

答案 0 :(得分:1)

使用http://example.com/content?id=42作为链接,并将intent过滤器添加到清单

中的活动
<intent-filter>
    <data android:scheme="http" android:host="example.com" />
    ...
</intent-filter>

但是,已注册的应用列表,例如浏览器将在首次在计算机上访问链接时显示。

答案 1 :(得分:1)

您需要了解客户端的浏览器及其操作系统,并使您的网站适应它们。例如,如果浏览器是Chrome且操作系统是Android,请使用Intent解决方案;如果浏览器是Safari,请使用example:// schema。您可以获取查看请求的User-Agent标头的信息,但我确信有许多开源库可以帮助您获取与浏览器和操作系统相关的信息。

答案 2 :(得分:1)

似乎您可以通过让用户提供一次性帮助来至少近似体验:

  1. 让您的网页本身具有后备网址内容。
  2. 点击页面时,请检查用户代理以查看操作系统是否为Android
  3. 如果是Android,请向用户显示选项提示/对话框以使用网络或Android
  4. 如果他们选择网络(请记住选择本地存储空间),请关闭对话框并显示后备补丁
  5. 如果他们选择了android(记住选择),使用intent:// URL(没有fallback_url)重定向到应用程序,将在必要时将它们推向市场安装
  6. 首次互动后,它会按照您的描述运作 - 自动将其带到网页或已安装的应用中。

答案 3 :(得分:0)

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

意图://细节ID = X&安培; URL = Y&安培;引荐= Z#意图;方案=市场;行动= android.intent.action.VIEW;包= com.android.vending;结束“;

X:应用程序的包名称

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

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

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

答案 4 :(得分:-3)

你需要在android projects.e.x中设置一个网页条件:如果浏览器中的网页是xxxxxx.com打开你的Android应用程序。 多数民众赞成!