检查是否在node.js + cordova +离子应用程序上启用GPS,如果GPS禁用,通知用户并指示他设置以打开GPS

我正在创build一个移动应用程序,使用节点,angular,离子和cordova,这应该与Android版本4.0.3和更高版本兼容。 如果用户禁用了GPS,我希望应用popup通知。 此外,通知还应有选项可取消并指向GPS设置,供用户手动切换GPS。

为了做到这一点,我尝试了下面的npm插件,但没有一个为我工作。 当我尝试他们时,只有闪屏显示,没有别的。

  • cordova.plugins.diagnostic
  • cordova – 插件 – fastrde-checkgps
  • cordova – 插件,Android的gpsdetect

这是我尝试使用cordova.plugins.diagnostic插件的代码。

.run(function($ionicPlatform) { $ionicPlatform.ready(function() { if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); cordova.plugins.Keyboard.disableScroll(true); } if (window.StatusBar) { StatusBar.styleDefault(); } cordova.plugins.diagnostic.isGpsLocationEnabled(function(enabled){ alert("GPS location is " + (enabled ? "enabled" : "disabled")); }, function(error){ alert("error"); }); }) 

我在这里做错了什么? 我在我的代码中跟着这个 。 有人可以告诉我如何做到这一点?

问题解决了。 我已经将下面的代码部分添加到了错误的地方。

 cordova.plugins.diagnostic.isGpsLocationEnabled(function(enabled){ alert("GPS location is " + (enabled ? "enabled" : "disabled")); }, function(error){ alert("error"); }); 

它不应该在$ ionicPlatform.ready函数内被调用,因为在设备完全准备就绪之前我没有定义插件。 我把它放在我的控制器之一,它的工作。

有一个非常好的cordova插件。 它不仅检查位置是否打开,还可以要求不同的准确性,并打开它们而不将用户redirect到他的位置设置。

cordova-插件请求定位精度

 cordova.plugins.locationAccuracy.request(function(success){ console.log("success"); },function(err){ console.log("fail. Prompt will show up, turn on location serives or use precise location"); },cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY)