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