检测应用程序是不是安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7)

Posted

技术标签:

【中文标题】检测应用程序是不是安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7)【英文标题】:Detect if an app is installed on iPad or iPhone (iOS6 & iOS7)检测应用程序是否安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7) 【发布时间】:2014-01-15 04:57:44 【问题描述】:

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

因此我实现了一个 JS 插件调用Smart App Banner,但在 ios7 中,本机横幅能够检测到应用已安装并打开它而不是去应用商店,是否可以使用JS并检查是否安装了应用并打开应用而不是去应用商店?

【问题讨论】:

请检查这个:- ***.com/questions/2751640/… 你的问题解决了吗? @PiyushDubey 是的。因重复而关闭。 【参考方案1】:

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

简单版

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

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

<iframe id="l"   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);

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

硬版(不要这样做)

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

    在与该用户绑定的浏览器中保留一个 cookie 获取用户的数字指纹(IP 地址、操作系统、操作系统版本、屏幕尺寸等)并将其发送到您的后端。将此与 cookie 关联。 当用户打开您的应用程序时,发送相同的数字指纹。您的后端可以将其与基于浏览器的数字指纹相匹配,并注意此用户/cookie 具有应用程序 在随后访问您的网站(带有横幅)时,返回页面的服务器应使用 cookie 来查找用户是否拥有该应用程序。如果是这样,则返回带有“打开”文本的横幅。如果没有,请返回带有“安装”文本的横幅。

这很重要,但肯定是可行的。简单版本可以在几分钟内完成(您只需要弄清楚您希望横幅的外观),而硬版本需要后端和应用程序修改以及无休止的测试和调整,以使数字指纹识别和匹配正确。我们在 Branch 已经为此工作了一年,并且知道这是多么痛苦。

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

【讨论】:

以上是关于检测应用程序是不是安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7)的主要内容,如果未能解决你的问题,请参考以下文章

检测 iPhone/iPad/iPod touch 的颜色?

检测 iPhone/iPad 是不是受密码保护

有没有办法检测扩展是不是在 iPad 和 iPhone 上运行

设置一个应用程序来检测操作系统版本。和 iPhone 或 iPad

检查 Phonegap 应用程序是不是在 iPad 或 iPhone 上运行

通过 javascript 检测 ipad/iphone webview