2014-10-01 12 views
5

jako szablon kodu robi to tak,jak obsługiwać zdarzenia onNotification w ngCordova Push wtyczki

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

udaje mi się z powodzeniem uzyskać RegID z GCM. Ale jak mogę zarządzać onNotification z?

Odpowiedz

5

znalazłem rozwiązanie.

zamiast robić to:

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

zrobić tak:

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

następnie

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

wszystkich prac zgodnie z oczekiwaniami teraz :)

+0

czy któreś z was otrzymało wtyczkę geoLocation? – Mike

+1

Ale jeśli chcesz mieć dostęp do wstrzykniętych zależności, takich jak $ http, aby wysłać regid do mojego API, przypuszczam, że to rozwiązanie nie działa z powodu kontekstu "okna"? – Kaz

0

zmienić następujące kod do ng-cordova.js:

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

a następnie ustawić obiekt konfiguracji opcje w następujący sposób:

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

To spowoduje wyświetlenie powiadomienia w szufladzie powiadomień, gdy aplikacja jest otwarty.

Powiązane problemy