4

アプリの目標:アプリがフォアグラウンドとバックグラウンドのいずれかにある場合でも、移動ごとに地理位置情報を取得し、場所をログに記録します。

非常に多くのコードと組み合わせを試しましたが、うまく機能させることができません (今から 2 日後...)。

従来の地理位置情報 (getCurrentPosition) は正常に機能していますが、アプリを閉じるとバックグラウンドの地理位置情報が起動されますが、何も起こりません... 関数「callbackFn」が起動されることはありません。

バックグラウンド アクティビティに対してアクティブ化された xcode > Capabilities Audio & location を使用して IOS でテストしています。また、プラグインで指定された jQuery サンプルの例を動作させたので、それが動作するのを見ましたが、ionic/angularjs では決して動作しませんでした。

バックグラウンドを処理する現在のコントローラーは次のとおりです。

.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
})

すべてのコード (完全な ionic アプリ スターター) を github に置きました: https://github.com/Jeff86/ionic_ngcordova_backgroundgeo_test/tree/master

4

2 に答える 2

0

bg で std Cordova-geolocation プラグインを使用したくないことは間違いありません。すぐにバッテリーが消耗します。

私は、Ionic の基礎となる background-geolocation プラグインの作成者です。新しい Ionic ベースの SampleApp を作成しました。

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

于 2015-06-06T00:10:35.683 に答える
0

この記事を読みましたhttp://ngcordova.com/docs/plugins/backgroundGeolocation/

コードを

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

解決策はありますか?

于 2015-04-03T02:15:36.880 に答える