2014-09-22 4 views
10

Utilizzo di Cordova (ionicframework + angularjs) Build per l'utilizzo di richieste di notifiche push per dispositivi Android. Quando si effettua la registrazione Il risultato del messaggio successHandler() viene generato con ('ok')! Perché il metodo onNotification() non viene attivato in qualsiasi momento ??.Errore di riferimento onnotification non definito nella notifica push cordova android

var pushNotification; 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 

     pushNotification = window.plugins.pushNotification; 
     setupNotificationsForandroid(); 
    } 
    //begin setup 
    function setupNotificationsForandroid() { 
    // alert("inside setup"); 
     if (device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos"){ 

      pushNotification.register(
      successHandler, 
      errorHandler, 
      { 
       "senderID":"856763042820", 
       "ecb":"onNotification" 
      }); 
     } else { 
      pushNotification.register(
      tokenHandler, 
      errorHandler, 
      { 
       "badge":"true", 
       "sound":"true", 
       "alert":"true", 
       "ecb":"onNotificationAPN" 
      }); 
     } 
    } 
    function successHandler(result){ 

     //alert("success"+result); 

    } 
    function errorHandler(){ 

     alert("error"); 
    } 
    // Android 
    function onNotification(e) { 
     //alert("inside onnotification"); 
     switch(e.event) 
     { 
     case 'registered': 
       if (e.regid.length > 0){ 
       //set up the server call for storing registraion ids 
       alert(e.regid); 
       } 

     break; 

     case 'message': 
       // if this flag is set, this notification happened while we were in the foreground. 
      if(e.foreground){ 
       var soundfile = e.soundname || e.payload.sound; 
       var my_media = new Media("android/assets/www/"+ soundfile); 
       my_media.play(); 
      }else{ 
       // otherwise we were launched because the user touched a notification in the notification tray. 
      } 


      break; 

     case 'error': 
       console.log("Error"+e.msg); 
       break; 

     default: 
      console.log("An unknown event"); 
      return; 
     } 
    } 

Ecco il mio messaggio di console:

09-22 11:38:46.151: I/Web Console(24662): processMessage failed: Stack: ReferenceError: onNotification is not defined 
09-22 11:38:46.151: I/Web Console(24662):  at eval (eval at processMessage (file:///android_asset/www/cordova.js:1006:26), <anonymous>:1:1) 
09-22 11:38:46.151: I/Web Console(24662):  at processMessage (file:///android_asset/www/cordova.js:1006:13) 
09-22 11:38:46.151: I/Web Console(24662):  at Function.androidExec.processMessages (file:///android_asset/www/cordova.js:1076:13) 
09-22 11:38:46.151: I/Web Console(24662):  at pollOnce (file:///android_asset/www/cordova.js:944:17) 
09-22 11:38:46.151: I/Web Console(24662):  at pollOnceFromOnlineEvent (file:///android_asset/www/cordova.js:939:5) at file:///android_asset/www/cordova.js:1045 
09-22 11:38:46.151: D/CordovaLog(24662): file:///android_asset/www/cordova.js: Line 1046 : processMessage failed: Message: Jjavascript:onNotification({"regid":"APA91bHDLg9BZl-eicx3tS-MjVGy-mcufmbRc-EpCuKzb9b_tPddG125jyxY-OhVR5vul6az-eJ2nZ0PEiOVPqP2KjClaUwAKTBQx5gsIluI0jsGIrpCvNQdUbtKUBxNNH0DH94RHuGpjU29xhTS5Cl8qIgH1MlJHw","event":"registered"}) 

In base a questo messaggio processMessage failed: Stack: ReferenceError: onNotification is not defined console Credo che il problema con onNotification() prego aiutare

risposta

17

onNotification deve essere avere portata in una finestra.

window.onNotification = function(){ 

} 
+1

Thaks un loooooot si salvare la mia due giorni di mal di testa –

+0

@Hanh Le - è stato salvato anche la mia. anch'io ho avuto lo stesso problema grazie uomo – Dino