[英]IONIC 2 - GeoLocation ask or permission every time when app open
我正在使用离子Geolocation
库来获取用户当前位置。 当我每次打开应用程序时,都要求获得许可。 我已使用以下代码从用户获取当前位置。
let options = {timeout: 20000, enableHighAccuracy: true , maximumAge: 0};
this.geolocation.getCurrentPosition(options).then((resp) => {
})
您能帮我为什么每次都要求许可吗?
谢谢
之所以会发生这种情况,是因为在调用请求用户位置的代码之前,Ionic平台可能尚未完全准备就绪。 请参阅此Ionic论坛讨论。
使用本地设备位置权限&的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});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.