应用程序被杀后,cordova-plugin-local-notifications单击事件

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

我发现了很多旧版本,但我没有找到一个明确的答案,让应用程序被杀后本地通知点击事件工作。如果应用处于活动状态或后台,则通知有效。为了测试我编写了以下代码。

app.initEvents = function() {
    "use strict" ;
    var fName = "app.initEvents():" ;
    app.consoleLog(fName, "entry") ;


    cordova.plugins.notification.local.isPresent(1, function (present) 
    {
        if (! present) {
            var d = new Date();
            d.setMinutes(d.getMinutes() + 2);
            cordova.plugins.notification.local.schedule({
                id: 1,
                title: "Test message",
                message: "Message body",
                date: d
            });
        }
    });

    cordova.plugins.notification.local.on("click", function (notification, state) {
        alert(notification.id + " was clicked -> app.Ready");
    }, this);

    var el, evt ;

    if( navigator.msPointerEnabled || !('ontouchend' in window))
        evt = "click" ;
    else
        evt = "touchend" ;

    app.hideSplashScreen() ;

    app.consoleLog(fName, "exit") ;
} ;
document.addEventListener("app.Ready", app.initEvents, false) ;

发生的事情是通知已安排并在2分钟后显示。如果应用程序同时被杀死,则仍会触发通知,但不会处理click事件并再次安排通知。所以我假设通知在被点击后被清除,因为app.ready事件稍后处理它无法处理点击事件?

有没有办法让这项工作?我正在使用插件的CLI 6.5和0.8.4版本。我只在Android 7.1.1上测试过。

android cordova notifications
1个回答
0
投票

为了确保,事件监听器将会触发,你必须将它放在deviceready中,例如:

document.addEventListener('deviceready', onDeviceReady, false);

const onDeviceReady = () => {
  window.cordova.plugins.notification.local.on('click', (notification, args) => {
      alert(notification.id + " was clicked -> app.Ready");
  });
}

但是,确保在调用deviceready之后将其放置,否则,它可能无法正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.