BackgroundGeolocation不起作用,未定义 [英] BackgroundGeolocation is not working, is not defined
问题描述
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,并使用此页面的自述文件"中提供的代码.当我在银河s7上进行编译和测试时,出现此错误:
I am trying to use this plugin for IONIC1 and use the code provided in the "README" of this page. when I compile and tested on my galaxy s7, I am getting this error:
未定义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);
});
我想念什么或做错什么了?
What am I missing or what am I doing wrong?
推荐答案
cordova-plugin-mauron85-background-geolocation 2.3.5
cordova-plugin-mauron85-background-geolocation 2.3.5
您正在使用插件版本 2.x 而不是3.0.
You are using plugin version 2.x and not 3.0.
从迁移文档到3.0,
backgroundGeolocation对象重命名为BackgroundGeolocation
backgroundGeolocation object renamed to BackgroundGeolocation
您可以将插件版本更新为最新版本.
You can either update the plugin version to the latest one.
ionic cordova plugin rm cordova-plugin-mauron85-background-geolocation
ionic cordova plugin add cordova-plugin-mauron85-background-geolocation
或
使用
backgroundGeolocation.configure({...})
我会选择第一个选项,因为迁移更改文档列出了许多重大更改.
I would go with the first option since the migration change docs list many breaking changes.
这篇关于BackgroundGeolocation不起作用,未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!