我正在使用cordova的push插件。当用户点击通知时,按预期将其带到“广告页”。但奇怪的是,仅当我在onResume()中包含alert()或在点击通知后再次打开应用程序时,它才起作用。

function onNotificationAPN(e) {
    // Event callback that gets called when your device receives a
    // notification

    imgURL = e.imgURL; //should get set at same time notification appears

    if (e.alert) {
        navigator.notification.alert(e.alert);
    }
}

function onResume() {

    alert(imgURL); //1st

    if(imgURL)
    {
        alert(imgURL); //2nd
        window.location.href = "ad.html";
        imgURL = null;
    }
}


第一个警报显示“未定义”。但是第二个警报显示在我的通知有效负载中设置的imageURL。如果我注释掉第一个警报,则不会出现第二个警报。但是,如果我关闭并重新打开该应用程序,则可以。

这里发生了什么?

最佳答案

您是否已将imgURL定义为全局变量,因为它已在不同的函数中使用?我不确定100%,但是您可以使用超时代替警报。

    var imgURL;

function onNotificationAPN(e) {
    // Event callback that gets called when your device receives a
 // notification

    imgURL = e.imgURL; //should get set at same time notification appears

    if (e.alert) {
        navigator.notification.alert(e.alert);
    }
}

function onResume() {

    //alert(imgURL); //1st

setTimeout(function(){
        if(imgURL)
        {
            //alert(imgURL); //2nd
            window.location.href = "ad.html";
        imgURL = null;
        }
}, 3000);


}

09-04 18:19