Я старался cordovaGeolocation link Я вставил один и тот же код в своем приложении, он отлично работает для меня, когда приложение открыто, мне нужно получить эту геолокацию и отправить ее к серверу, в то время как приложение находится в фоновом режиме, поэтому используется фоновый режим cordova см. backgroundMode documentation link.Угловая js cordovaGeolocation получает текущую позицию и отправляет данные на сервер в фоновом режиме
- Я получаю геолокацию и отправку на сервер работает нормально, когда приложение открыто.
- Я использовал onpause и onresume cordova также для состояния приложения, как в родном андроиде.
- Когда приложение находится в onpause, я использовал background enable(), внутри onactivate(), заданный интервал и получая геолокацию и отправку на сервер.
- После того, как приложение переходит в onpause и возвращается в onresume, приложение получает геолокацию и отправляет сервер отлично.
app.run(['$rootScope', '$location','$mdToast','$cordovaPush', '$sessionStorage', '$cordovaDevice',
'$cordovaLocalNotification', '$timeout','$cordovaGeolocation','$interval','Service',
function($rootScope, $location,$mdToast,$cordovaPush, $sessionStorage, $cordovaDevice,
$cordovaLocalNotification, $timeout,$cordovaGeolocation,$interval,Service) {
document.addEventListener("resume", function() {
console.log("The application is resuming from the background");
cordova.plugins.backgroundMode.disable();
}, false);
document.addEventListener("pause", function() {
console.log("The application is pausing to the background");
cordova.plugins.backgroundMode.enable();
}, false);
var i=0;
cordova.plugins.backgroundMode.onactivate = function() {
console.log("notificationReceived");
setInterval(function() {
console.log("interval: "+ i++);
var posOptions = {timeout:3000,enableHighAccuracy: false};
$cordovaGeolocation
.getCurrentPosition(posOptions)
.then(function (position) {
var GeoLocation=new Object();
GeoLocation.geo_location_latitude=position.coords.latitude;
GeoLocation.geo_location_longitude=position.coords.longitude;
Service.CurrentService(GeoLocation).success(function(data){
console.log(new Date());
console.log("cur loc: "+JSON.stringify(data));
}).error(function(data){
console.log("error: "+JSON.stringify(data));
})
}, function(err) {
console.log("Error: "+err);
// here Position Error Occurs
// error
});
},60000);
}
})];
Ошибка, когда приложение закрывается или идет OnPause, получение Позиция Сообщение об ошибке: Время ожидания истекло при получении геолокации и не отправляет данные на сервер. Посмотрите на это кодирование и дайте мне понять, как это сделать. Заранее спасибо.
Спасибо, я попробую и вернусь назад –