一。需求
最近在做的一个模块中,有一个后台统计功能要求按照用户的省份来统计。
所以在用户操作的时候,后台就应该得到其地理位置信息,并存放在数据库中。
二。分析
作为一个移动应用,要想定位用户
1.可以通过客户端系统(android,ios)获取,(以前android做过使用百度lbs定位的)
2.可以通过h5页面,gps定位(前台调用一些接口我也不太懂,好像能这样吧,反正这不是重点)
3.可以通过后台ip地址,然后通过ip库查找定位
由于公司里面使用的是h5页面,所以定位就交给了h5以及后台。
又由于前台嫌麻烦,所以定位就采用上述的第三种方法来做。
虽然ip地址一直在更新,用这种方法做不一定能够保持准确,但是确实最简单的。
三。动手开搞
刚好之前公司也有项目使用过定位
之前使用的是经纬度+ip,先让客户端传经纬度,如果没传过来,那么后台通过ip来判断。
到了我这里,直接就通过ip判断。
拿到以前用的代码,看了一通,原来用的是17mon 的免费api,那么这个方面就不多说了,就是根据文档调api。
现在的问题是,获取IP地址。
四。获取ip
1.问题1-调用api
request.getRemoteAddr();
这样的确能够获取到ip,但是企业应用的时候会出问题,这里先不说,假定可以(见3)。
2.问题2-测试
问题来了,获取到局域网的ip了,调用17mon的api得到的结果是 “局域网”
所以,局域网是测试不了这个的(至少我没什么好的办法),于是搬到了公司的stage(外网)环境测试
3.问题3-获取到的ip为127.0.0.1

本文介绍了在处理移动应用后台统计时,如何通过IP地址获取用户地理位置信息。由于客户端使用H5页面,选择了通过IP库定位。但在实际操作中,由于Nginx反向代理,获取到的IP是127.0.0.1。解决办法是配置Nginx,使用x-forwarded-for头来获取客户端真实IP。最后分享了获取IP的代码片段。
最低0.47元/天 解锁文章
7111

被折叠的 条评论
为什么被折叠?



