仅当应用程序未在cordova android中运行时才显示推送通知

时间:2021-07-17 16:27:23

I have a push notification integrated with GCM It's working fine. Whenever push notification comes then it redirected to specific page when user outside the application. But whenever user inside the application then it also redirect the specific page when notification come. So i don't want to redirect to specific page when user inside the. Please help me...

我有一个与GCM集成的推送通知它工作正常。每当推送通知出现时,当用户在应用程序外时,它会重定向到特定页面。但是每当用户在应用程序内部时,它也会在通知到来时重定向特定页面。所以我不希望在用户内部时重定向到特定页面。请帮帮我...

Here is my code...For Push Notification

这是我的代码...推送通知

var pushNotification;
function onDeviceReady() {
    $("#app-status-ul").append('<li>deviceready event received</li>');
    document.addEventListener("backbutton", function (e) {
        $("#app-status-ul").append('<li>backbutton event received</li>');
        if ($.mobile.activePage.is('#indexPage')) {
            
            e.preventDefault();
            navigator.app.exitApp();
        }
        else {
            navigator.app.backHistory();
        }
    }, false);
    try {
         pushNotification = window.plugins.pushNotification;
        $("#app-status-ul").append('<li>registering ' + device.platform + '</li>');
        if (device.platform == 'android' || device.platform == 'Android') {
            pushNotification.register(successHandler, errorHandler, { "senderID": "XXXXXXXXX", "ecb": "onNotification" });		// required!
        }
        //else {
        //    pushNotification.register(tokenHandler, errorHandler, { "badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN" });	// required!
        //}
    }
    catch (err) {
        txt = "There was an error on this page.\n\n";
        txt += "Error description: " + err.message + "\n\n";
        alert(txt);
    }
}
// handle GCM notifications for Android
function onNotification(e) {
    $("#app-status-ul").append('<li>EVENT -> RECEIVED:' + e.event + '</li>');
    switch (e.event) {
        case 'registered':
            if (e.regid.length > 0) {
                $("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regid + "</li>");
                localStorage.setItem("REGID", e.regid);
                console.log("regID = " + e.regid);
            }
            break;
        case 'message':
            // if this flag is set, this notification happened while we were in the foreground.
            // you might want to play a sound to get the user's attention, throw up a dialog, etc.
            if (e.foreground) {
                $("#app-status-ul").append('<li>--INLINE NOTIFICATION--' + '</li>');
                window.localStorage.setItem("push_que", e.payload.id);
                window.localStorage.setItem("recordId",e.payload.recordId);
                var push_que = e.payload.id;
                var soundfile = e.soundname || e.payload.sound;
                var my_media = new Media("/android_asset/www/" + soundfile);
                my_media.play();
            }
            else {	
                if (e.coldstart) {
                    $("#app-status-ul").append('<li>--COLDSTART NOTIFICATION--' + '</li>');
                    window.localStorage.setItem("push_que", e.payload.id);
                    window.localStorage.setItem("recordId",e.payload.recordId);
                }
                else
                    $("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>');
                window.localStorage.setItem("push_que", e.payload.id);
                window.localStorage.setItem("recordId",e.payload.recordId);

            }
            $("#app-status-ul").append('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>');
          
            //android only
            $("#app-status-ul").append('<li>MESSAGE -> MSGCNT: ' + e.payload.msgcnt + '</li>');
            //amazon-fireos only
            $("#app-status-ul").append('<li>MESSAGE -> TIMESTAMP: ' + e.payload.timeStamp + '</li>');
            onResume();
            break;
        case 'error':
            $("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>');
            break;
        default:
            $("#app-status-ul").append('<li>EVENT -> Unknown, an event was received and we do not know what it is</li>');
            break;
    }
    pushNotify();
}
function successHandler(result) {
    $("#app-status-ul").append('<li>success:' + result + '</li>');
}
function errorHandler(error) {
    $("#app-status-ul").append('<li>error:' + error + '</li>');
}

Here is onResume() method which helps to redirect specific page

这是onResume()方法,它有助于重定向特定页面

function onResume() {
    //toast('App resumed', 'short');

    var que_push = window.localStorage.getItem("push_que");
    if (que_push == "inboxDetails") {
        $.mobile.changePage("#inboxDetails");
        window.localStorage.removeItem("push_que");
    }
    if (que_push == "trackComplaintTable") {
        var recordId = window.localStorage.getItem("recordId");
        showtrackcomplaintdetail(recordId);
        $.mobile.changePage("#trackComplaintTable");
        window.localStorage.removeItem("push_que");
    }
    // if a number is sent  open a specific news article calling a specific funcion that loads the "articles"
    if (que_push != "inboxDetails" && que_push != "trackComplaintTable" && que_push != "") {
        window.localStorage.removeItem("push_que");
    }

}

1 个解决方案

#1


0  

You only need to pass onResume() function in else block of if (e.foreground) statement ** inside **onNotification(e) function

你只需要在** onNotification(e)函数中的if(e.foreground)语句**的else块中传递onResume()函数

#1


0  

You only need to pass onResume() function in else block of if (e.foreground) statement ** inside **onNotification(e) function

你只需要在** onNotification(e)函数中的if(e.foreground)语句**的else块中传递onResume()函数