I have an App which constantly polls for location when its in travelling mode. My issue is that once the screen is locked, the App can no longer access the geolocation from the phone.
I have managed to find this plugin but it requires I purchase it for the capability to work in Android.
http://shop.transistorsoft.com/pages/cordova-background-geolocation-premium
Does anyone know if there is a free option that i can use to get location to successfully poll in an Ionic / Cordova application while the screen is locked?
Another option is to use a partial wakelock on Android to keep your app alive while in the background (screen off or switched out of foreground). You'd need to do this via a plugin, but it would have the same effect as a background service, keeping you app alive to receive location updates while in the background.
See my old answer here for the source code for a Cordova 2.0 plugin (it will need updating for Cordova 3+).
Have you looked at NG-Cordova?
first add ng-cordova to your project:
bower install ngCordova
or
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
Then inject it:
angular.module('myApp', ['ngCordova'])
Here is a plugin you could try:
http://ngcordova.com/docs/plugins/backgroundGeolocation/
just install the plugin:
cordova plugin add https://github.com/christocracy/cordova-plugin-background-geolocation.git
then bind it to a controller:
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);
});