6

Ich baue gerade eine Android-Anwendung mit ionic/ngcordova. Ich bin gerade dabei, Push-Benachrichtigungen zu implementieren. Ich habe Push-Benachrichtigungen als ein Dienst implementiert, der bei app.run(function(){..}) Stufe injiziert wird. Der Registrierungsteil funktioniert und ich erhalte einen Rückruf, der die regid enthält. Wenn sich die Anwendung im aktiven Zustand befindet, wird das Ereignis ausgelöst und die Benachrichtigung wird empfangen.ngCordova/Ionic Push Benachrichtigungen, wenn die Anwendung im Hintergrund ist

Das Problem, das ich habe, ist, dass wenn die Anwendung in den Hintergrund tritt, die Benachrichtigungen überhaupt nicht empfangen werden. Ich würde erwarten, dass eine lokale Benachrichtigung ausgelöst wird, wenn die App nicht läuft oder etwas ähnliches, aber absolut nichts passiert, was seltsam ist.

Ich habe das Web in den letzten Tagen auf der Suche nach einer Lösung durchforstet, aber ich konnte nichts finden, was mir anzeigt, dass es einfach funktionieren sollte.

Das Folgende ist meine notificationService.js in meinem app

app.factory('notificationService', ['$cordovaPush', function($cordovaPush){ 

    var dataFactory = {}; 

    // 
    // When the device is ready and this service has been plumbed in... 
    document.addEventListener("deviceready", function(){ 

     console.log("initializing push notifications..."); 

     _register(); 

    }, false); 


    // 
    // Registers the device for push notifications... 
    var _register = function(){ 

     var config = {}; 

     if (device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos"){ 

      // TODO: centralise this value as it can change... 
      config = { 
       senderID: "448168747432", 
       ecb: "onNotificationGCM" 
      }; 

     }else { 
      // iOS 
      config = { 
       "badge":"true", 
       "sound":"true", 
       "alert":"true" 
      }; 

      // Can add the following property to the config object to raise a callback with the information if need be... 
      // "ecb": "onNotificationRegisterAPN" 
     } 

     $cordovaPush.register(config).then(function(result){ 

        // 
        // Typically returns "ok" for android and devicetoken for iOS 
      console.log(result); 

     }); 
    }; 

    window.onNotificationGCM = function(result){ 

     console.log(result); 

     /* 
     I get called when the app is in the foreground, but nothing happens when the app is in the background. 
     */ 

    }; 

    dataFactory.register = _register; 

    return dataFactory; 
}]); 

Wenn es hilft, ich bin mit PushSharp über eine .net-Anwendung, um die Meldungen zu liefern. Jede Hilfe würde sehr geschätzt werden.

UPDATE: ich die folgenden Frameworks/libs bin mit:

  • Ionic Rahmen 1.2.14-beta6
  • Cordova 4.2.0
  • PushPlugin

Antwort

3

Für jedermann sonst, wer hat sich schon seit ein paar tagen die haare gezogen wie ich, die lösung war wirklich einfach ... mir fehlten zwei immobilien in meinem Pushsharp Queue Notification requé st. So am Beispiel auf dem Repo-PushSharp Github, die hier gegeben: https://github.com/Redth/PushSharp#sample-code

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE-REGISTRATION-ID-HERE").WithJson("{\"alert\":\"Hello World!\",\"badge\":7,\"sound\":\"sound.caf\"}")); 

muss aktualisiert werden, um die fehlenden Eigenschaften hinzuzufügen:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE") 
         .WithJson(@"{""alert"":""This is the future"",""badge"":7,""sound"":""sound.caf"",""title"":""Status Bar title"",""message"":""Some text you want to display to the user""}")); 

Andernfalls, wenn Ihre App entwickelt werden, geschieht Cordova mit und es ist nicht Im Vordergrund steht nichts, nichts wird passieren.

Tipp meinen Hut gdelavald mit seinem Kommentar auf PushPlugin für mich in die richtige Richtung zeigt hier:

https://github.com/phonegap-build/PushPlugin/issues/212