在我的cordova项目中,我使用了Katzer的 cordova-plugin-background-mode 和Mauron85的背景地理位置插件可在后台启用位置跟踪。这两个插件都是最新的稳定版本。
这在android和ios 8,9上工作正常。但是现在随着 ios 10 的发布,我们遇到了一个问题。我运行了一些测试,似乎后台插件并不是一直将模式(背景或前景)更新到正确的位置。这使我们的应用程序非常小问题。
我们用于启用/禁用后台模式的代码如下所示:
function enableBackgroundMode() {
if ($rootScope.ionicReady && window.cordova && !cordova.plugins.backgroundMode.isEnabled()) {
cordova.plugins.backgroundMode.enable();
}
}
function disableBackgroundMode() {
if ($rootScope.ionicReady && window.cordova && cordova.plugins.backgroundMode.isEnabled()) {
cordova.plugins.backgroundMode.disable();
}
}
function isRunningInBackground() {
return $rootScope.ionicReady && window.cordova && cordova.plugins.backgroundMode.isActive();
}
当isRunningInBackground()返回true时,我们调用以下函数来检索用户在后台的位置。
function getCurrentLocationInBackground(interval) {
var deferred = $q.defer();
backgroundGeolocation.configure((location) => {
backgroundGeolocation.finish();
LogService.debug("Latitude: " + location.latitude + ", Longitude: " + location.longitude);
deferred.resolve(location);
}, (error) => {
LogService.error('BackgroundGeoLocation error');
deferred.reject(error);
}, {
desiredAccuracy: 10, //10m accurate
stationaryRadius: 5, // if stationary, device must move beyond 5m to engage background-tracking
distanceFilter: 5, //min distance a device must move before update event is generated
stopOnTerminate: true, // <-- enable this to clear background location settings when the app terminates
notificationTitle: translations['generic.background.tracking.title'],
notificationText: translations['generic.background.tracking.text'],
locationProvider: backgroundGeolocation.provider.ANDROID_ACTIVITY_PROVIDER,
activityType: "AutomotiveNavigation",
interval: interval ? parseInt(interval) : 30000
});
if (window.cordova) {
backgroundGeolocation.start();
}
return deferred.promise;
}
然而,在ios 10上,如果我们将我们的应用程序放在后台,并再次返回到前台,则很可能cordova.plugins.backgroundMode.isActive()仍然返回true,这会触发我们的后台逻辑.. < / p>
我已经调试了一段时间了,但我看不出问题。
答案 0 :(得分:-1)
这适用于我的ios10。
将此添加到您的info.plist:
FullName
------------------
Smith Johns Sr
James Macoy
Krushit J Patel II
Sheldon Devid
Jeff vandorf Jr
Steve Smith I