我们的应用程序中的流程如下:
>显示全屏活动,向用户解释我们为什么需要GPS位置
>获得GPS许可
>显示加载微调器
>获得第一个地理位置
>将第一个位置发送到服务器
>从服务器加载相关数据
>隐藏加载微调器
我们有来自用户的多个支持请求,说没有任何反应,他们只看到加载微调器.
我们目前正在执行激活的GPS提供商,因此这不是非活动地点服务的问题.
我设法通过在我们的一部手机上创建用户帐户并启动应用程序来重现该错误,我注意到没有调用onLocationChanged
代码超过了LocationServices.FusedLocationApi.requestLocationUpdates,因此它应该提供位置,但它不会
我知道我过去通过打开谷歌地图解决了这个问题,但是
a)我很难想象用户到目前为止还没有使用谷歌地图
b)告诉他们打开谷歌地图来修复我们的应用程序中的问题听起来很奇怪
here是使用的确切代码的要点(我在第131行设置断点,开始调试并到达那里,所以我应该获取位置,但是onLocationChanged方法永远不会被调用
解决方法:
“解决方案”,如果你想打电话给它,是告诉用户打开谷歌地图,点击“找我”按钮,等到谷歌地图找到它们然后再次打开我们的应用程序并向我们报告是否做了什么
编辑:
甚至更好,重构整个事情,根本不使用google-api-client,看起来像这样:
link(这是kotlin,无论如何,kotlin很好)
编辑2:我将它从eventbus实现更改为rx-subject. eventbuses真的很脏,如果可能的话,你应该远离他们