公司做物流方面的,为便于调度中心安排仓储资源和车辆资源,故希望能获知货物运输过程中的实时位置,评估货物到达时间。公司领导首先想到的是小程序实现。经过定位权限API的申请,接下来就是接入到小程序中了,在接入方法没有错的情况下,经过真机(12mini, iOS15.6 ,微信8.0.54 基础库版本3.7.1)实测,发现根据手机将微信切换到后台(直接HOME键)后,网络上报逻辑将不再执行,严格来说,是暂停执行,虽然 startLocationUpdateBackground官方文档是说在后台执行(也说能在小程序切换后台和微信切换后台后执行),但我的服务端就是没有收到上报日志,当然,当手机微信处在前台时,还是能正常获取上报日志的。
后来翻到一篇贴子https://developers.weixin.qq.com/community/develop/doc/0004e40f280d6820f522f696766800,原来用得不爽的不止我一个。
切换到后台后JS都不运行了,那上报位置就是个扯淡的事,经过真机调试, 发现微信切换到后台后,小程序和服务端都没有日志打印了,由此可能上报逻辑没有执行了,或JS代码没执行了。过几分钟后微信再切换到前台恢复到小程序,瞬间打印出很多LOG,此时JAVA后台也瞬间收到很多上报日志,由此可见,微信是将定位数据缓存起来了,在恢复前台时一次性将数据全部放出来了,如此说来,熄屏后定位也确实在后台进行,但不是我要的使用场景。我理解为官方的在后台进行定位,对我来说startLocationUpdateBackground是 【在小程序执行的生命周期内,离开小程序定位页面,跳转到小程序中其它页面时,定位仍在进行】,可能我说得不完全对,大家听听就好了,不要喷,哈哈。不知大家是否出现我这种现象,请能解决真正后台定位的朋友赐教,目前我只能自己开发APP来后台定位了,但也不能做到100%后台定位,不可能绕开设备和系统的限制,只能做到尽可能保活的情况下后台定位。