2015-02-22 3 views
4

Цель приложения: получить геолокацию на каждом ходу и место регистрации, когда приложение находится на переднем плане и на заднем плане.Получите работу 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

ответ

0

Я прочитал эту статью http://ngcordova.com/docs/plugins/backgroundGeolocation/

Я вижу, что вы должны ввести свой код в

document.addEventListener("deviceready", function() { ... });

Вы найдете решение?

+0

Привет, я пытался герметизировать с deviceready, но не сделал трюк. Вы можете видеть на контроллере.js, что я положил его в комментарии по строке 70. На данный момент я просто отказался использовать этот bglocation, поскольку у меня нет времени потратить на него, может быть, через несколько месяцев. – Jeff86

0

Вы определенно не хотите использовать плагин cord-geolocation std в bg, он мгновенно убьет батарею.

Я являюсь автором базового плагина-геолокации для Ionic. Я создал новый образец SampleApp на основе Ionic.

https://github.com/transistorsoft/cordova-background-geolocation-SampleApp

+0

RTFM, это четко задокументировано. Эта версия Android больше не поддерживается, кстати. Он ест батарею, как муравьи, на пикнике. Я не рекомендую это для производственного приложения, особенно если вы хотите, чтобы ваши пользователи понравились вам. – Christocracy

+0

да, я нашел. Было бы неплохо, если бы вы указали то, что не работает вообще для платформы, в образце кода. Вместо того, чтобы писать подробно об этом и упоминать в последней главе в «поведении», что что-то на самом деле вообще не работает. В любом случае, мне нужно проверить местоположение только каждые, скажем, 30 минут. – Toskan

+0

Версия, которую вы используете, больше не поддерживается (и не работает не менее 6 месяцев). Новое репо находится здесь https://github.com/transistorsoft/cordova-background-geolocation-lt – Christocracy

Смежные вопросы