2016-01-13 71 views
2

我的问题很简单。我需要一种方式来使用Ionic应用程序中的按钮打开和关闭GPS。我检查了文档并阅读了这个ng-cordova插件http://ngcordova.com/docs/plugins/geolocation/,但它们似乎没有这个功能。我是否错过了一些东西,或者甚至在Ionic Framework中可能呢?谢谢!如何以编程方式在Ionic Framework或Cordova中启用和禁用GPS

+3

从您的应用程序无法启用GPS。用户必须转到设备的设置。 – Joerg

+0

Hi @Joerg!感谢您的快速回复。我希望你不介意,但你是否碰巧有一些支持文档或链接来巩固你的答案?这不是我怀疑你的答案(我真的认为情况是这样),但它会很棒,不是吗?而且,我还需要向客户展示某些内容,以及为了文档的缘故=)。谢谢! – balfonso

回答

1

据我所知,没有能力直接从您的应用程序禁用GPS。

如果您尝试允许用户禁用GPS,我通过将设置添加到localStorage来实现此目的,用户可以在我的应用程序的设置页面上更改该设置。每次我在我的位置工厂检查GPS时,如果设置被禁用,我会检查设置并运行错误回调。

可能会有某种呼叫可以自动打开设备上的位置设置页面,因为我已经看到其他应用程序这样做,但我不确定Cordova/Ionic是否支持该设置。

+0

Hi @ SM3RKY!从我的理解你的答案..你有一个GPS(开/关)在你的应用程序的设置页面。此设置与设备的GPS设置无关。因此,简而言之,只有当设备的GPS设置已打开但您仍然无法打开设备的GPS设置时,您的应用程序的GPS设置才有效。这有点像告诉你的应用程序使用或不使用GPS,即使它已启用。我对么? – balfonso

+0

是的,这是正确的,这是你正在寻找,或者你是否尝试启用设备的GPS设置从它的应用程序被禁用,因为我不确定你是否可以做后者 – SM3RKY

+0

本来我想要在应用程序内部直接开启/关闭GPS。但在@Joerg评论后,我意识到我需要做更多的研究,并最终得出结论,后者(打开设置页面)将是最佳选择。我还没有申请,但在我的应用程序呢。在此期间,我已经转向其他任务,但以后肯定会应用它。在这一点上,我觉得可能已经有一个插件,但实际上Ionic和Cordova没有进行任何搜索。感谢您的帮助顺便说一句:D – balfonso

0

经过研究,我意识到在Ionic(至少现在不是)开启/关闭应用程序的位置是不可能的,所以最好的选择是打开设备位置设置,因为您不仅可以更改您的GPS状态,您也可以更改功率和精度。

你可以使用cordova-diagnostic-plugin这个插件(有很好的文档)来操作设备设置,如wifi,蓝牙,GPS。

我希望它有帮助!

1

是在离子3测试这个插件Location Accuracy ,该位置在没有通过设置页面的情况下被启用,这回答了可以以编程方式启用GPS。这是我通过检查是否使用Diagnostic plugin启用位置后导航到模态页面后使用的代码示例。

位置auth.ts

import { Component } from '@angular/core'; 
import { IonicPage, 
     ViewController } from 'ionic-angular'; 
import { LocationAccuracy } from '@ionic-native/location-accuracy'; 

@IonicPage({ 
    name: 'location-auth' 
}) 
@Component({ 
    selector: 'page-location-auth', 
    templateUrl: 'location-auth.html', 
}) 
export class LocationAuthPage { 
    constructor(private locationAccuracy: LocationAccuracy, 
       public viewCtrl: ViewController) {} 

    requestAccuracy() { 
    this.locationAccuracy.canRequest().then((canRequest: boolean) => { 
     if(canRequest) { 
     this.locationAccuracy.request(this.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY).then(() => { 
      console.log('Request successful.') 
      this.closeModal(); 
      }, 
      error => { 
      console.log('Error requesting location permissions', error) 
      this.closeModal(); 
      } 
     ); 
     } 
    }); 
    } 

    closeModal() { 
    this.viewCtrl.dismiss(); 
    } 
} 

位置auth.html

<ion-header> 
    <ion-navbar color="primary"> 
    <ion-title>GPS Authorization</ion-title> 
    </ion-navbar> 
</ion-header> 


<ion-content padding> 
    <p>Your Location is not enabled yet, please turn on your gps location.</p> 
    <button large 
      ion-button 
      block 
      (click)="requestAccuracy()">Turn on your GPS</button> 
</ion-content> 

到目前为止,我测试的Android手机上。让我知道,如果iOS的工作方式。

相关问题