0

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

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

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>');
}

这是有助于重定向特定页面的 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");
    }

}

4

1 回答 1

0

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

于 2016-10-07T12:24:14.207 回答