【问题标题】:How do I detect, via javascript in Safari Mobile, if my iPhone application is installed?如何通过 Safari Mobile 中的 javascript 检测我的 iPhone 应用程序是否已安装?
【发布时间】:2009-07-16 00:40:59
【问题描述】:

您可能知道,iPhone 应用程序可以注册一个自定义 URL 方案处理程序,也就是“myapp:”,这些可以用于在 Safari 中查看的页面中的链接。

如果访问者安装了应用程序,我想从特定页面自动启动我的应用程序。如果该应用尚未安装,我将只向他们展示当前针对移动设备优化的页面视图。

如何进行这种检测?谷歌搜索没有结果。另外,为了棘手,我尝试过这样做无济于事:

var image = new Image();
image.onerror = function(e){
  alert("bummer");
}
image.onload = function(e){
  alert('success!');
}
image.src = 'myapp://something=meaningful';

有人遇到过应用程序检测的方法吗?

【问题讨论】:

  • 不可能...对不起伙计 :-/ 不幸的是,这可以用来做各种的坏事。这将是广告商的大奖 :-)
  • @BenGotow 你知道 Android 是如何做到这一点而不发生各种坏事的吗?

标签: javascript iphone


【解决方案1】:

【讨论】:

  • 是的 - 我使用了这个概念(但使用 localStorage 而不是 cookie 以获得更好的持久性)。谢谢。
【解决方案2】:

我认为这是不可能的。您需要在 iPhone/Mobile Safari 上注册您的应用程序,然后创建一个 uri 来启动您的应用程序,就像 http:、ftp:mailto: 一样。因此,在您的情况下,您将有类似 Am I installed Mobile Safari 需要知道要启动哪个应用程序来加载该 URI,而我只是不认为此功能内置于 iPhone 中。我知道 javascript 无法查询您的 iPhone 以查看已安装的内容。

我希望我错了,因为这似乎是一个强大的功能,但另一方面我可以看到一些与此类相关的安全问题。

祝你好运。

【讨论】:

  • 自定义 URL 方案当然是可能的,所以处理“myapp://” URL 是没有问题的。我希望在尝试将访问者发送到应用程序之前检查应用程序是否已安装以处理这些 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
相关资源
最近更新 更多