2014-05-01 46 views
0

我想通过JS检测用户是否安装了特定的应用程序。来自浏览器的移动应用程序检测

我知道应用商店标记,如果他们没有安装它,它将弹出通用的“下载此应用程序”。我不是在问这个。

我有一个概念,但它不完整。这会尝试定位iPhone和Android设备。

知道与特定前缀的链接可以触发一个应用程序来打开:

  1. 目标与JS一个隐藏的iframe打开前缀来触发该应用程序的URL
  2. 该页面会触发一个岗位信息如果加载,则返回父级,表示应用程序未打开。
  3. 如果应用程序存在,则消息将永远不会被触发回父级,因为它会在应用程序中打开。

不幸的是,我的客户不希望应用程序自动打开(或试图打开),但只需知道它是否安装。

想法?在我的逻辑中出现错误?变通?现有的解决方案?

感谢

+0

您定位的是哪个系统? Android,iOS? –

+0

@still_learning更新。 –

+0

作为最近正在研究这一努力的人,我很遗憾地说你可能会走向死胡同。我们最接近的就是启动应用程序,或者在启动失败时进入appstore。 (对于Android,Intent链接将有助于实现更好的用户体验 - 但不是特别要求的) – Katana314

回答

0

有可能没有办法做到这一点,因为一般来讲你不准从网页上闲逛在用户的设备上。即使用户安装或未安装的应用程序不是最敏感的个人信息,但将该信息暴露给来自网络的脚本仍然有点安全/隐私问题。应用商店标记可能是您将要获得的最接近的标记,因为它是提供类似但受保护的功能的官方API。

+0

有用的信息。一般来说,这更好地发表评论,虽然 - 因为它不是一个解决OP的问题(并不是说任何解决方案,甚至存在) – Katana314

+1

这不是一个有效的答案,虽然说一些东西不存在,给它的推理?我不是要求更多的信息,我只是在说明他的问题可能的解决方案。道歉虽然这是可怜的形式 - 我在这里是新的,仍然试图找出什么时候你应该张贴的地方之间的区别。 –

+0

虽然这是我理解SO的问题/回答政策的方式 - 例如,如果问题具有不完整的信息,那么它也可能需要评论,并且当时不应该有答案。同样的道理,如果有人问“我如何时间旅行”,评论回应是“时间旅行实际上是不可能的”,有人可以将他们的问题修改为“好吧,我真的想从5分钟前获取用户数据” - 有人可以回答“以后如何保存数据” – Katana314

0

我可以想出两种方法来解决你的问题,但没有一个特别好。从iOS 6开始,您可以使用Smart App Banners来推广应用程序。

最明显的解决方案是隐藏用户的任何操作,例如,通过阻止活动在发布URL请求后显示出来。我对此没有任何经验,也无法告诉你可以在多大程度上隐藏它。

说实话,我不知道第二种方法是否适用于移动设备。它已被广泛用于桌面应用程序,并允许应用程序间通信 - 包括浏览器和应用程序之间的通信。但是,由于移动设备通常具有较高的安全限制,可能性可能会受到限制。这是一个非常理论化的建议,因为我非常肯定它不适合,不管它是否可能。
您的应用必须在未使用但固定的端口上提供小型HTTP服务器。您的JavaScript代码然后可以使用JSONP与应用程序进行通信(假设浏览器的安全限制不阻止此操作)。如果通信失败,您可能会认为该应用程序未安装。

在任何人试图批评这种方法之前,让我说这是一个理论上的可能性,可能会不稳定,并且不适用于大多数应用程序。运行HTTP服务器的努力对于这样的次要任务来说太高了。

相关问题