IONIC 2 - GeoLocation每当app打开时询问或许可

时间:2017-08-22 11:28:52

标签: ios permissions ionic2 geolocation

我正在使用离子Geolocation库来获取用户当前位置。 当我每次要求获得许可时打开应用程序。我使用以下代码从用户获取当前位置。

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

})

请你帮我解释为什么每次都要求获得许可。

由于

1 个答案:

答案 0 :(得分:4)

这可能发生,因为在请求调用用户位置的代码之前,Ionic平台可能还没有完全就绪。 See this Ionic forum discussion.

Ionic-Native地理位置插件,它使用本机设备位置权限&仅设置一次,并且Ionic Cordova应用程序运行的浏览器窗口同时要求用户许可。

在我的情况下,我假设你的,每次启动时显示的警报引用浏览器'container'和'index.html',表明它是浏览器要求许可。特定于应用程序的警报仅在安装后的初始启动时显示一次。

我在启动后出现的模式中遇到了与地理定位服务调用相同的问题。我的解决方案是:

  1. 从离子角注入Platform到组件中 发出地理位置请求,然后

  2. 将我的地理位置呼叫包裹在platform.ready().then()中,以确保 它只是在平台之后运行,你知道,“准备好了。”

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

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