2016-10-07 1 views
0

GCM과 통합 된 푸시 알림이 있습니다. 정상적으로 작동합니다. 푸시 알림이 올 때마다 사용자가 응용 프로그램 외부에있을 때 특정 페이지로 리디렉션됩니다. 그러나 사용자가 애플리케이션 내부에있을 때마다 알림이 올 때 특정 페이지를 리디렉션합니다. 그래서 내가 특정 페이지로 리디렉션하고 싶지 않아요. 여기 앱이 cordova에서 실행되지 않을 때만 푸시 알림 표시 android

는 푸시 알림의 경우 ... 내 코드입니다 ... 제발 도와주세요

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" }); \t \t // required! 
 
     } 
 
     //else { 
 
     // pushNotification.register(tokenHandler, errorHandler, { "badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN" }); \t // 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 { \t 
 
       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"); 
 
    } 
 

 
}

+0

(); –

+0

이 함수에서 데이터베이스에 모바일 장치 키를 삽입하는 웹 서비스를 호출합니다. –

+0

# 코드 건 pushPlugin을 사용하고 있습니다. –

답변

0

당신은 단지의 다른 블록에 onResume() 함수을 통과해야하는 경우 (e.foreground) 문 ** 안에 ** onNotification (예) 기능 기능 pushNotify을 무엇을 할 것 인

관련 문제