检测iPad或iPhone上是否安装了应用程序(iOS6和iOS7)

时间:2014-01-15 04:57:45

标签: javascript ios iphone ipad mobile-safari

我正在使用Apple的smart app banner在网站上推广我的应用,但这不适用于iPad或iPhone上的其他浏览器(即Chrome)。

因此我实现了一个JS插件调用Smart App Banner,但在iOS7中,原生横幅能够检测到安装的应用程序并打开它而不是去应用程序商店,是否可以执行同样使用JS并检查是否安装了应用并打开应用而不是去应用商店?

1 个答案:

答案 0 :(得分:0)

使用简单的javascript调用无法知道应用是否已安装。在Branch Metrics,我们从头开始构建了一个可自定义的应用下载横幅。让我描述一下您可以采用的一种基本方法,然后我将描述更高级的版本。

简易版

使用一个标有“在应用中查看”按钮的横幅。单击该按钮时应执行两项操作: 1.触发URI方案,但在iframe中隐藏错误消息 2.如果未安装应用程序,请使用setTimeout重定向到App Store或Play Store。

在正文中,有以下内容(如果触发应用程序的URI失败,这有助于隐藏丑陋的错误消息):

<iframe id="l" width="1" height="1" style="visibility:hidden"></iframe>

然后当用户点击按钮时,触发以下脚本:

// Deep link to your app goes here
document.getElementById("l").src = "my_app://";

setTimeout(function() {
    // Link to the App Store should go here -- only fires if deep link fails                
    window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
}, 500);

这样做的缺点是你不知道应用程序是否已安装,因此按钮需要说出“应用程序中的视图”之类的通用内容,而不是具体的“安装”或“打开”,具体取决于用户是否具有应用程序。

硬版(不要这样做)

如果您想知道,当页面加载时,无论用户是否拥有该应用,您都需要:

  1. 在与此用户绑定的浏览器中保留Cookie
  2. 获取用户的数字指纹(IP地址,操作系统,操作系统版本,屏幕大小等)并将其发送到您的后端。将其与cookie相关联。
  3. 当用户打开您的应用时,请发送相同的数字指纹。您的后端可以将其与基于浏览器的数字指纹相匹配,并注意此用户/ cookie具有应用
  4. 在随后访问您的网站(具有横幅)时,返回页面的服务器应使用cookie来查找用户是否拥有该应用。如果是这样,请返回文本“打开”的横幅。如果没有,请返回带有文本“install”的横幅。
  5. 这不是微不足道的,但肯定是可行的。简单版本可以在几分钟内完成(您只需要弄清楚您希望横幅看起来像什么),而硬版本将需要后端和应用程序修改以及无休止的测试和调整以使数字指纹识别和匹配正确。我们已经在分公司工作了一年,知道它有多痛苦。

    希望这为智能应用横幅提供了一些可行的解决方案。