Цель приложения: получить геолокацию на каждом ходу и место регистрации, когда приложение находится на переднем плане и на заднем плане.Получите работу Ionic + ngCordova + background geolocation
Я пробовал так много кода и комбинации, но я не могу заставить его работать (через 2 дня ...).
Классическая геолокация (getCurrentPosition) работает нормально, но когда мы закрываем приложение, фоновая геолокация запускается, но ничего не происходит ... Функция «callbackFn» никогда не запускается.
Я тестирую на IOS с помощью xcode> Возможности Аудио & местоположение активировано для фоновой активности. Я также сделал работу с примером примера jQuery, приведенным в плагине, поэтому я видел, что он работает, но никогда с ионными/угловыми.
Вот текущий контроллер обработки фона:
.controller('TestCtrl', function($scope, $timeout, $cordovaBackgroundGeolocation, $ionicPlatform, $window)
{
$scope.lat_geo = "loading lat...";
$scope.long_geo = "loading long...";
//-- Geolocal launch
var options = {
enableHighAccuracy : false,
desiredAccuracy: 0,
stationaryRadius: 1,
distanceFilter: 5,
notificationTitle: 'Background tracking', // <-- android only, customize the title of the notification
notificationText: 'ENABLED', // <-- android only, customize the text of the notification
activityType: 'AutomotiveNavigation',
debug: true, // <-- enable this hear sounds for background-geolocation life-cycle.
stopOnTerminate: false // <-- enable this to clear background location settings when the app terminates
};
$ionicPlatform.ready(function()
{
console.log("[IONIC PLATFORM IS NOW READY]");
//-- First launch a basic geolocalisation to get user acceptance of geosharing ;)
navigator.geolocation.getCurrentPosition(function(location) {
console.log('[GEOLOCAL JS1] Location from Phonegap');
},
function (error){
console.log('[GEOLOCAL JS1] error with GPS: error.code: ' + error.code + ' Message: ' + error.message);
},options);
//-- test adaptation depuis l'app jquery
var callbackFn = function(location) {
console.log('[BackgroundGeoLocation] Update callback: ' + location.latitude + ',' + location.longitude);
};
var failureFn = function(error) {
console.log('[BackgroundGeoLocation] Error: '+error);
};
$cordovaBackgroundGeolocation.configure(callbackFn, failureFn, options);
// Turn ON the background-geolocation system. The user will be tracked whenever they suspend the app.
$cordovaBackgroundGeolocation.start();
//-- Just a timeout to retreive long/lat
$timeout(function()
{
navigator.geolocation.getCurrentPosition(function(location)
{
console.log('[GEOLOCAL JS3] Location from Phonegap');
startPos = location;
$scope.$apply(function() {
$scope.lat_geo = startPos.coords.latitude;
$scope.long_geo = startPos.coords.longitude;
});
console.log("[GEOLOCAL BASIC] OK this time :)");
},
function (error){
console.log('[GEOLOCAL JS3] error with GPS: error.code: ' + error.code + ' Message: ' + error.message);
},options);
}, 3000);
});
//-- End Geolocal
})
Я положил все мой код (полный ионный приложение стартера) на GitHub: https://github.com/Jeff86/ionic_ngcordova_backgroundgeo_test/tree/master
Привет, я пытался герметизировать с deviceready, но не сделал трюк. Вы можете видеть на контроллере.js, что я положил его в комментарии по строке 70. На данный момент я просто отказался использовать этот bglocation, поскольку у меня нет времени потратить на него, может быть, через несколько месяцев. – Jeff86