IOS10+ 无法获取手机传感器

2016-05-09

IOS10+ 无法获取手机传感器

不用任何API在没有HTTPS协议下,最小的代价解决方案。

近期在获取手机位置信息的时候发现了一个问题,那就是获取不到了,经过几番周折的查询,发现是因为IOS 10 以上的系统,对HTTP协议的网页获取手机传感器做了限制,百度JSAPI和高德JSAPI也都遇到了相同的问题,在最小规模的改动下,大家都如出一辙的选择用HTTPS的IFrame去解决这个问题。

由于我的应用是部署在百度云开放平台上的,用的是BAE基础版,然后基础版不支持HTTPS,于是我就不得不使用这种方法,我将我的应用放在Github上,然后页面中将IFrame插进去,再将获得到的点传给父页面,这里又遇见一个问题就是跨域问题,由于我的IFrame页面和父页面不同域,然后我又查了一些资料,最终采用PostMessage的方法解决,但是据说浏览器支持情况不是很好,支持如下:

Chrome 2.0+、Internet Explorer 8.0+, Firefox 3.0+, Opera 9.6+, 和 Safari 4.0+

但是考虑到一半获取位置信息大多是在手机上获取,没有做具体的调研,但是低于Safari 4.0的设备已经是非常少见了。总体还是能够接受的。最后示例见最下面的示例Demo中是代码。

HTTPS意味着什么?

HTTPS 全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

那么意味着我们将来的应用更加安全了么?

A.是

B.否

唉,我觉的是麻烦了!但是改革总是要有流血和牺牲的。但是从用户和技术发展的角度考虑,好像是进步了。

Demo

示例

备注:百度云基础平台1毛钱一天,Github不花钱,我是个穷人所以只能用它,当然不在乎的人可以选择更好的产品。