给产品经理讲技术丨超级APP诞生记(二)
【文章摘要】定位是操作系统的一个基础功能,iOS和android都有现成的实现。
【相关推荐】
给产品经理讲技术丨超级APP诞生记(一)
给产品经理讲技术丨超级APP诞生记(三)
给产品经理讲技术丨没线,并不可怕?
给产品经理讲技术丨提需求的正确姿势是什么
给产品经理讲技术丨产品后悔药来了,讲讲热补丁技术
让大家久等了。上期的超级APP诞生记我们讲了账号登录的技术实现,现在我们终于可以识别用户身份了。但是作为一个超级APP,光有登陆功能远远不够。人们都说社交应用始于约炮,为了让小伙伴们能愉快的约起来,我们还需要另外一个核心功能:定位。
用到定位的APP几乎随处可见。还记得我们之前讲过的Android的系统权限吗,当时我们抽取了国内Top100的APP,其中有83个请求了大致位置的权限,有76个请求了精确位置的权限。这些APP请求了定位权限之后,就会通过系统接口获取当前手机的经纬度,上传给服务器。有的服务器拿到位置之后,查询了一些附近的商家给你,这就是你们常用的团购APP。有的检索了一些附近的人给你,这就是你们常用的约炮APP。还有的,查了一些附近的私家车给你,这就是Uber。看,做一个APP好简单。
如何获取经纬度?首先想到的就是GPS了。GPS的原理是,天上飘着几颗卫星,不断的广播自己的位置。定位时,打开你的手机里的GPS信号接收器,收集至少4颗卫星发出的信号,用收到信号的时间乘以光速可以算出你和每颗卫星之间的距离,再加上每个卫星的位置已知,就可以确定你的位置了。我们简化了每个细节,但是你要知道,定位其实只要能找到一个参照物,并且知道这个参照物的位置的话,就成功了。古人说,众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。意思是,找了他好久哇,也没有一个靠谱的参照物,最后只能靠蒙一把了。嘿,竟然成功了。所以说定位,关键是参照物。
然而在天朝,事情总是没你想的那么简单。你手机里的GPS,在出厂前都要添加一个加偏芯片,作用是把定位到的原始经纬度,人为的造成一点偏移,生成所谓的火星坐标。你要问我为什么这样搞,我也不知道,大概是测绘局的那帮人,想跟三胖玩捉迷藏吧。解决办法是把国内所有地图也用同样的算法做偏移,做成火星地图。火星坐标配上火星地图,妈妈就再也不用担心我约到的都是国际友人炮了。
GPS到了室内没了卫星信号就不行了,这时候就轮到定位两兄弟:基站定位和WIFI定位出场了。为什么说他们是两兄弟呢?因为他们的原理很相似。前面说定位的关键是参照物,基站定位的参照物是就是基站。运营商通过查询你手机连接的基站的位置,就能找到你。WIFI定位的参照物是无线路由器。是你连接到无线路由器的时候,上传了该路由器的MAC地址,服务器通过查询公开的MAC地址对应的经纬度来找到你。等等,基站作为参照物有理有据,令人信服,因为它不动啊,但是路由器的话,说不准哪天我就送给隔壁老王了呢。我承认,路由器是可以移动的,但是,你看到路上的街景采集车了吗?如果你以为它们只是采集路边的花花草草,那你就错了。它们路过你家的时候,就把你的无线路由器的MAC地址和GPS记下来了。日复一日年复一年,一个庞大的WIFI定位数据库就这样建立起来了。
定位是操作系统的一个基础功能,iOS和android都有现成的实现。上面说了这么多废话,其实程序员几行代码就搞定了。所以你去找程序员提需求预估工作量时候,先问有没有系统接口,有没有现成实现。如果他一上来就跟你讲一段大道理,顾左右而言它,那一定是在耍流氓。
欢迎添加微信公众号:给讲技术