【快应用】如何避免通知栏提示快应用一直获取地理位置

发布时间 2023-08-18 16:48:56作者: Mayism123
 【关键词】

地理位置、subscribe、unsubscribe

 

【问题背景】

快应用中调用geolocation.subscribe接口获取地理位置,即使在定位完成后,会在通知栏一直显示某某快应用在获取地理位置,为了避免用户认为一直在获取他的位置,导致用户的反感,这里提供一种方式来去掉这种提示。

cke_256.png

 

【解决方案】

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);

        }

      })

截图:

位置定位成功后,通知栏就不再显示获取地理位置了。

cke_3370.png​​

 

【衍生问题】

快应用获取地理位置时,此时如果把快应用退到后台,会发现通知栏也会一直提示获取地理位置,这种情形建议在onhide中调用unsubscibe接口取消监听,这样就不会出现了。

   onHide(options) {

      '// Do something initial when hide.'

      geolocation.unsubscribe();

    },