IONIC 2 - 每次打开应用程序时都会询问或许可 GeoLocation

IONIC 2 - GeoLocation ask or permission every time when app open

我正在使用 ionic Geolocation 库获取用户当前位置。 当我每次请求许可时打开应用程序。我使用以下代码从用户那里获取当前位置。

let options = {timeout: 20000, enableHighAccuracy: true , maximumAge: 0};
this.geolocation.getCurrentPosition(options).then((resp) => {

})

你能帮我看看为什么每次都需要权限吗?

谢谢

之所以会发生这种情况,是因为在调用请求用户位置的代码之前,Ionic 平台可能尚未完全准备好。 See this Ionic forum discussion.

使用本机设备位置权限的 Ionic-Native 地理定位插件仅设置一次,并且 Ionic Cordova 应用 运行 所在的浏览器 window 都在请求用户权限。

在我的情况下,我想您也是如此,每次启动时显示的警报都引用了浏览器 'container' 和 'index.html',表明浏览器正在请求许可。特定于应用程序的警报仅在安装后首次启动时显示一次。

我遇到了同样的问题 w/a 在启动后立即出现的模态中进行地理定位服务调用。我的解决方案是:

  1. 将ionic-angular中的Platform注入到组件中 发出地理定位请求,然后

  2. 将我的地理位置调用包装在 platform.ready().then() 中,以确保 它仅 运行 在平台之后,你知道,"ready."

这删除了重复的警报,它只在第一次启动后立即询问一次。

 import { Component, OnInit } from '@angular/core';
 import { Platform } from 'ionic-angular';
 import { Geolocation } from '@ionic-native/geolocation';

 constructor(private platform: Platform, private geo: Geolocation) {}

 ngOnInit() {

    this.setLocation(); 
 }

  setLocation() {
     this.platform.ready().then(() => { 
        return this.geo.getCurrentPosition()
                       .then(pos => {//do stuff w/position});
     });
  }