如何在cordova中触发地理围栏退出通知时获取警报

问题描述 投票:0回答:1

这是先前要求的,但不是在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));
}
android cordova cordova-plugins visual-studio-cordova geofencing
1个回答
1
投票

使用此插件的地方:qazxsw poi,根据您的需要,请注意以下事项:

Javascript后台执行

这是已知的限制。在后台,您的应用可能会/将被暂停以不使用系统资源。因此,任何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,
};

编辑1

将代码添加到主代码后,我注意到两件事:

首先,文档指定当您想要一次添加多个地理围栏时,必须从数组中执行此操作,因此需要使用多个参数。它可能只是信任文档更好。

然后,文档还指定

Geofence会覆盖之前具有相同ID的一个。

而这正是你所做的那可能是事件无法正常工作的原因。

如果我正确地遵循文档,你应该有这样的东西:

window.geofence.onTransitionReceived = function (geofences) {
    geofences.forEach(function (geo) {
        if (geo.TransitionType === 2 ) {
           // Do what you want
        }
    });
};
© www.soinside.com 2019 - 2024. All rights reserved.