我有一个应用程序,它在旅行模式下不断轮询位置。我的问题是,一旦屏幕被锁定,应用程序将无法再从手机访问地理位置。
我设法找到了这个插件,但它要求我购买它才能在Android中运行。 http://shop.transistorsoft.com/pages/cordova-background-geolocation-premium
有人知道在屏幕被锁定时是否有可用于获取位置以在Ionic / Cordova应用程序中成功轮询的免费选项?
答案 0 :(得分:3)
你看过NG-Cordova了吗?
首先将ng-cordova添加到您的项目中:
bower install ngCordova
or
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
然后注入它:
angular.module('myApp', ['ngCordova'])
这是一个你可以尝试的插件: http://ngcordova.com/docs/plugins/backgroundGeolocation/
只需安装插件:
cordova plugin add https://github.com/christocracy/cordova-plugin-background-geolocation.git
然后将其绑定到控制器:
module.controller('MyCtrl', function($scope, $cordovaBackgroundGeolocation) {
var options = {
// https://github.com/christocracy/cordova-plugin-background-geolocation#config
};
document.addEventListener("deviceready", function () {
// `configure` calls `start` internally
$cordovaBackgroundGeolocation.configure(options)
.then(
null, // Background never resolves
function (err) { // error callback
console.error(err);
},
function (location) { // notify callback
console.log(location);
});
$scope.stopBackgroundGeolocation = function () {
$cordovaBackgroundGeolocation.stop();
};
}, false);
});
答案 1 :(得分:2)
另一种选择是在Android上使用partial wakelock来保持您的应用在后台处于活动状态(屏幕关闭或切换到前台)。您需要通过插件执行此操作,但它会与后台服务具有相同的效果,让您的应用程序保持活动状态,以便在后台接收位置更新。
有关Cordova 2.0插件的源代码,请参阅my old answer here(需要更新Cordova 3 +)。