2014-10-01 6 views
5

als Codevorlage es so tun,wie onNotification Ereignis in ngCordova Push-Plugin

.controller('PushNotificationsCtrl', function ($scope, $cordovaPush) { 
var androidConfig = { 
"senderID":"372433177444", 
"ecb":"onNotification" 
}; 

$cordovaPush.register(androidConfig).then(function(result) { 
    // Success! 
    $scope.pushSuccess = result 
}, function(err) { 
    $scope.pushSuccess = err; 
}); 

ich verwalten, um erfolgreich zu erhalten eine RegID von GCM zu handhaben. Aber wie kann ich dann onNotification von androidConfig verwalten?

Antwort

5

Ich fand die Lösung.

statt, dies zu tun:

var androidConfig = { 
"senderID":"372433177444", 
"ecb":"onNotification" 
}; 

ich wie folgt aus:

var androidConfig = { 
"senderID":"372433177444", 
"ecb":"window.onNotification" 
}; 

dann

window.onNotification = function(e) { 
    switch(e.event) 
    { 
     case 'registered': 
      if (e.regid.length > 0) 
      { 
       console.log("Your regID is : " + e.regid); 
      } 
      break; 

     case 'message': 
      // this is the actual push notification. its format depends on the data model  from the push server 
      console.log('message = '+e.message); 
      angular.element(document.querySelector('#yata')).html(e.message); 
      break; 

     case 'error': 
      console.log('GCM error = '+e.msg); 
      break; 

     default: 
      console.log('An unknown GCM event has occurred'); 
      break; 
    } 
}; 

alle Arbeiten wie jetzt erwartet :)

+0

hat einer von euch das geoLocation plugin funktioniert? – Mike

+1

Aber wenn Sie Zugang zu injizierten Abhängigkeiten wie $ http haben möchten, um regid an meine API zu senden, nehme ich an, dass diese Lösung wegen des "Fenster" -Kontextes nicht funktioniert? – Kaz

0

Ändern Sie den folgenden Code zu ng-cordova.js:

//config.ecb = 'angular.element(' + injector + ').injector().get(\'$cordovaPush\').onNotification'; 
config.ecb = "angular.element(" + injector + ").injector().get('$cordovaPush').onNotification"; 

und stellen Sie dann die Objektkonfigurationsoptionen wie folgt:

var options = { 
    android: { 
    senderID: "789175757493", 
    ecb:"onNotification", 
    forceShow: true 
    }, 
} 

wird es Meldungen im Benachrichtigungsauszug angezeigt werden, wenn die Anwendung geöffnet wird.