这是先前要求的,但不是在cordova中。
大家好,我想在用户进入地理围栏区域时收到警报,并且当用户退出地理围栏时也想要警报,以便我可以进入。
它应该适用于所有情况前景,背景,甚至应用程序被杀死
我在用户输入时收到警报,但在用户退出区域时却没有。
任何帮助将非常感激 。
码:
window.geofence.addOrUpdate({
id: "69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb",
latitude: xx.12345,
longitude: xx.12345,
radius: 100,
transitionType:1,
notification: {
id: 1,
title: "Welcome!",
text: "In.",
openAppOnClick: true
}
}, {
id: "69ca1b88-6fbe-4e80-a4d4-ff4d3748acdc",
latitude: xx.12345,
longitude: xx.12345,
radius: 100,
transitionType:2,
notification: {
id: 1,
title: "Bye!",
text: "Out.",
openAppOnClick: true
}
}).then(function () {
navigator.notification.alert('successfully added', function () { });
}, function (reason) {
navigator.notification.alert('failed', function () { });
})
转换回调函数:只有当我在区域内时才会被调用,当我离开该区域时它不被调用
window.geofence.onTransitionReceived = function (geofences) {
alert(JSON.stringify(geofences));
}
使用此插件的地方:qazxsw poi,根据您的需要,请注意以下事项:
这是已知的限制。在后台,您的应用可能会/将被暂停以不使用系统资源。因此,任何javascript代码都不会运行,只有后台服务可以在后台运行。当用户穿过地理围栏区域时的本地通知仍然有效,但任何自定义的javascript代码都不会。如果你想在地理围栏交叉点上执行自定义操作,https://github.com/cowbell/cordova-plugin-geofence
我们可以在插件文档中看到这个例子:
try to write it in native code.
如果我们搜索插件代码,我们发现了这个(www / TransitionType.js):
window.geofence.onTransitionReceived = function (geofences) {
geofences.forEach(function (geo) {
console.log('Geofence transition detected', geo);
});
};
所以你必须检查这是否有效:
var TransitionType = {
ENTER: 1,
EXIT: 2,
BOTH: 3,
};
将代码添加到主代码后,我注意到两件事:
首先,文档指定当您想要一次添加多个地理围栏时,必须从数组中执行此操作,因此需要使用多个参数。它可能只是信任文档更好。
然后,文档还指定
Geofence会覆盖之前具有相同ID的一个。
而这正是你所做的那可能是事件无法正常工作的原因。
如果我正确地遵循文档,你应该有这样的东西:
window.geofence.onTransitionReceived = function (geofences) {
geofences.forEach(function (geo) {
if (geo.TransitionType === 2 ) {
// Do what you want
}
});
};