【关键词】
地理位置、subscribe、unsubscribe
【问题背景】
快应用中调用geolocation.subscribe接口获取地理位置,即使在定位完成后,会在通知栏一直显示某某快应用在获取地理位置,为了避免用户认为一直在获取他的位置,导致用户的反感,这里提供一种方式来去掉这种提示。
【解决方案】
geolocation.subscribe接口是监听地理位置的,每次位置信息发生变化,都会被回调。因此建议在定位完成后调用geolocation.unsubscribe()取消监听,在下次获取位置时再重新调用即可。
在定位成功触发callback回调时调用unsubscribe取消监听。
代码实现:
geolocation.subscribe({callback: function (data) {console.log('handling success: longitude = ' + data.longitude + ', latitude = ' + data.latitude + ', accuracy = ' + data.accuracy + ', time = ' + data.time);setTimeout(() => {geolocation.unsubscribe();}, 1500);},fail: function (data, code) {console.log('handling fail, code = ' + code);}})
截图:
位置定位成功后,通知栏就不再显示获取地理位置了。
【衍生问题】
快应用获取地理位置时,此时如果把快应用退到后台,会发现通知栏也会一直提示获取地理位置,这种情形建议在onhide中调用unsubscibe接口取消监听,这样就不会出现了。
onHide(options) {'// Do something initial when hide.'geolocation.unsubscribe();},