我正在使用离子Geolocation
库来获取用户当前位置。
当我每次要求获得许可时打开应用程序。我使用以下代码从用户获取当前位置。
let options = {timeout: 20000, enableHighAccuracy: true , maximumAge: 0};
this.geolocation.getCurrentPosition(options).then((resp) => {
})
请你帮我解释为什么每次都要求获得许可。
由于
答案 0 :(得分:4)
这可能发生,因为在请求调用用户位置的代码之前,Ionic平台可能还没有完全就绪。 See this Ionic forum discussion.
Ionic-Native地理位置插件,它使用本机设备位置权限&仅设置一次,并且Ionic Cordova应用程序运行的浏览器窗口同时要求用户许可。
在我的情况下,我假设你的,每次启动时显示的警报引用浏览器'container'和'index.html',表明它是浏览器要求许可。特定于应用程序的警报仅在安装后的初始启动时显示一次。
我在启动后出现的模式中遇到了与地理定位服务调用相同的问题。我的解决方案是:
从离子角注入Platform
到组件中
发出地理位置请求,然后
将我的地理位置呼叫包裹在platform.ready().then()
中,以确保
它只是在平台之后运行,你知道,“准备好了。”
这删除了重复的警报,它只在首次启动后立即询问一次。
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});
});
}