您的位置:首页 > 移动开发

App中使用高德定位服务,少部分用户会反映定位不了

2017-08-05 11:40 316 查看
关于如何集成高德地图的定位,这里不再说了,高德地图官方文档上已经描述的很详细,这里主要说说,我们测试的时候定位正常,但有部分用户会反映定位不了,如何处理这类情况。
高德地图官方集成文档
关于运行时权限
GitHub地址

减少用户定位失败,需从下面几个方面进行分析:
1、将高德SDK升级到最新版本,首先看下面一组统计,这是通过友盟统计,分析的到每天定位失败的人数。



从折线图中可以明显的发现,从1号开始定位失败的人数明显下降,其中一部分原因是将SDK升级到最新的版本,另一部分原因后面会分析到。
目前高德地图支持远程依赖添加库文件的方法,能自动保持最新的版本。
在build.gradle中添加如下

compile 'com.amap.api:search:latest.integration'
compile 'com.amap.api:location:latest.integration'

2、权限问题导致的定位失败。可能你会有疑问,代码中已经运行时权限申请,为啥还会因为权限导致定位失败。checkSelfPermission检查是否需要获取权限,这个方法,在部分手机上无法判断。用户未授予权限,会返回0已授予权限的状态,
其中手机型号有:HUAWEICAZ-AL10、DOOVA6、H60-L02、PRA-AL00、HUAWEINXT-AL、LON-AL00、VTR-AL00,这里只列举部分机型。
解决方法,我们在高德地图定位回调的时候,进行错误码判断,当错误码返回12或13的时候,自定义一个dial
4000
og,用户确定后跳转到应用设置界面,手动开启权限。

cancelLoadingDialog();
int errorCode = location.getErrorCode();
String errorInfo = location.getErrorInfo();
errorInfo = errorInfo.substring(0, errorInfo.indexOf(" "));
if (errorCode == 12 || errorCode == 13) {//缺少权限的定位,要用户手动打开
    showPermissionDialog();
}



3、因环境因素导致的定位失败,错误码为:2、4、6
2为Wifi性能不足;6是定位依据不足,可能有wifi,但是是移动wifi。因为定位是依靠基站+WIFI,获取不到无法计算位置。4是网络异常,这个时候你会好奇,提示网络异常,为啥自己的后台日志还能上传。这是因为,网络是有波动的,定位的时候时候有问题,但是上传的时候网络好了,高德地图那边有以下情况会报4(网络异错误):网络请求过程中异常,类似于unkonow
host,无网络,网络差,请求超时。

4、错误码7,key错误,有些手机概率性获取不到报名,偶尔会报key错误。当然,如果所有的手机都是key错误,那么一定是包名和key不一致。

GitHub地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐