BackgroundGeolocation не работает, не определено - PullRequest
0 голосов
/ 25 июня 2018
Android
Device manufacturer and model: Samsung Galaxy s7
Cordova version: 8.0.0

        cordova-android-play-services-gradle-release 1.4.2 "cordova-android-play-services-gradle-release"
        cordova-plugin-device 2.0.2 "Device"
        cordova-plugin-facebook4 2.1.0 "Facebook Connect"
        cordova-plugin-geolocation 4.0.1 "Geolocation"
        cordova-plugin-googlemaps 2.3.2 "cordova-plugin-googlemaps"
        cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"
        cordova-plugin-ionic-keyboard 2.1.2 "cordova-plugin-ionic-keyboard"
        cordova-plugin-ionic-webview 1.2.1 "cordova-plugin-ionic-webview"
        cordova-plugin-mauron85-background-geolocation 2.3.5 "CDVBackgroundGeolocation"
        cordova-plugin-request-location-accuracy 2.2.3 "Request Location Accuracy"
        cordova-plugin-splashscreen 5.0.2 "Splashscreen"
        cordova-plugin-whitelist 1.3.3 "Whitelist"
        cordova.plugins.diagnostic 4.0.8 "Diagnostic"

Я пытаюсь использовать этот плагин для IONIC1 и использовать код, указанный в «README» на этой странице.когда я компилирую и тестирую на своем galaxy s7, я получаю эту ошибку:

BackgroundGeolocation не определено

BackgroundGeolocation is not defined

Я использую этот код:

app.controller('loginController', function($scope,$timeout) {
function onDeviceReady() {
  BackgroundGeolocation.configure({
    locationProvider: BackgroundGeolocation.ACTIVITY_PROVIDER,
    desiredAccuracy: BackgroundGeolocation.HIGH_ACCURACY,
    stationaryRadius: 50,
    distanceFilter: 50,
    notificationTitle: 'Background tracking',
    notificationText: 'enabled',
    debug: true,
    interval: 10000,
    fastestInterval: 5000,
    activitiesInterval: 10000,
    url: 'http://192.168.81.15:3000/location',
    httpHeaders: {
      'X-FOO': 'bar'
    },
    // customize post properties
    postTemplate: {
      lat: '@latitude',
      lon: '@longitude',
      foo: 'bar' // you can also add your own properties
    }
  });

  BackgroundGeolocation.on('location', function(location) {
    // handle your locations here
    // to perform long running operation on iOS
    // you need to create background task
    BackgroundGeolocation.startTask(function(taskKey) {
      // execute long running task
      // eg. ajax post location
      // IMPORTANT: task has to be ended by endTask
      BackgroundGeolocation.endTask(taskKey);
    });
  });

  BackgroundGeolocation.on('stationary', function(stationaryLocation) {
    // handle stationary locations here
  });

  BackgroundGeolocation.on('error', function(error) {
    console.log('[ERROR] BackgroundGeolocation error:', error.code, error.message);
  });

  BackgroundGeolocation.on('start', function() {
    console.log('[INFO] BackgroundGeolocation service has been started');
  });

  BackgroundGeolocation.on('stop', function() {
    console.log('[INFO] BackgroundGeolocation service has been stopped');
  });

  BackgroundGeolocation.on('authorization', function(status) {
    console.log('[INFO] BackgroundGeolocation authorization status: ' + status);
    if (status !== BackgroundGeolocation.AUTHORIZED) {
      // we need to set delay or otherwise alert may not be shown
      setTimeout(function() {
        var showSettings = confirm('App requires location tracking permission. Would you like to open app settings?');
        if (showSetting) {
          return BackgroundGeolocation.showAppSettings();
        }
      }, 1000);
    }
  });

  BackgroundGeolocation.on('background', function() {
    console.log('[INFO] App is in background');
    // you can also reconfigure service (changes will be applied immediately)
    BackgroundGeolocation.configure({ debug: true });
  });

  BackgroundGeolocation.on('foreground', function() {
    console.log('[INFO] App is in foreground');
    BackgroundGeolocation.configure({ debug: false });
  });

  BackgroundGeolocation.checkStatus(function(status) {
    console.log('[INFO] BackgroundGeolocation service is running', status.isRunning);
    console.log('[INFO] BackgroundGeolocation services enabled', status.locationServicesEnabled);
    console.log('[INFO] BackgroundGeolocation auth status: ' + status.authorization);

    // you don't need to check status before start (this is just the example)
    if (!status.isRunning) {
      BackgroundGeolocation.start(); //triggers start on start event
    }
  });

  // you can also just start without checking for status
  // BackgroundGeolocation.start();

  // Don't forget to remove listeners at some point!
  // BackgroundGeolocation.events.forEach(function(event) {
  //   return BackgroundGeolocation.removeAllListeners(event);
  // });
}

document.addEventListener('deviceready', onDeviceReady, false);

});

Что мне не хватает или что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Пытался и работал (как подсказал @Suraj Rao 25 ​​июня в 13:56)

cordova plugin add cordova-plugin-mauron85-background-geolocation@latest
0 голосов
/ 25 июня 2018

cordova-plugin-mauron85-background-geolocation 2.3.5

Вы используете версию плагина 2.x , а не 3.0.

Из Документации по миграции до 3.0,

Объект backgroundGeolocation переименован в BackgroundGeolocation

Вы можете обновить версию плагина досамый последний.

ionic cordova plugin rm cordova-plugin-mauron85-background-geolocation
ionic cordova plugin add cordova-plugin-mauron85-background-geolocation

Или

использовать

 backgroundGeolocation.configure({...})

Я бы выбрал первый вариант, поскольку в документах по изменению миграции перечислено много критических изменений.

...