我需要每30秒在firebase数据库中存储设备位置。我使用的是cordova - 7.0.1
和cordova-android - 6.2.3
以及https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.3.2。我有两个问题
1.当app在前台时,成功回调没有被执行。从来没有。
backgroundGeolocation.configure(getLocation, errorLocation, {
desiredAccuracy: 10,
stationaryRadius: 10,
distanceFilter: 10,
locationProvider: 'ANDROID_ACTIVITY_PROVIDER',
interval: 10000,
fastestInterval: 5000,
stopOnStillActivity: false,
debug: true,
stopOnTerminate: false
});
这是我正在使用的配置。我该怎么办才能让它发挥作用? 2.是否可以将参数传递给成功回调函数
var getLocation = function(location, param1, param2) {
console.log('[js] getLoaction:'+ location.latitude +','+ location.longitude +'-'+new Date());
backgroundGeolocation.finish();
}
答案 0 :(得分:0)
我发现这个插件不那么直接使用,但是我在您的示例中看到了一些可能导致您缺乏回调的事情:
locationProvider 是一个数值;这些示例对ANDROID_ACTIVITY_PROVIDER使用枚举,该枚举实际上是一个数字值1。您可以尝试在'ANDROID_ACTIVITY_PROVIDER'的字符串值上使用该枚举,看看是否有帮助。插件很可能找不到您要使用的提供程序,因此不会发生回调。
您为 distanceFilter 和 stationaryRadius 选择的配置值可能会阻止您使用的设备为您生成任何回调。我发现在开发过程中将其更改为0,然后从那里开始将其设置为0可以帮助我的设备生成更多的GPS回调,如果将它们设置得太高,即使我随身携带设备并像白痴一样在办公室里上下跳跃也没有任何反应。 / p>
此外,在您的 getLocation 函数中,您可以通过调用finish()关闭该库。这将导致您在关闭插件之前得到一个回调。因此,如果到达调用回调的地步,您将需要对其进行更改,以使其继续发生。