6

Attualmente sto costruendo un'applicazione Android utilizzando ionic/ngcordova. Sono al punto di implementare le notifiche push. Ho implementato le notifiche push come servizio che viene iniettato allo stage app.run(function(){..}). La parte di registrazione funziona e ricevo una richiamata contenente lo regid. Inoltre, quando l'applicazione è nello stato attivo, l'evento viene generato e la notifica viene ricevuta.ngCordova/Notifiche Push ioniche quando l'applicazione è in background

Il problema che sto avendo è che quando l'applicazione va in secondo piano, le notifiche non vengono ricevute affatto. Mi aspetterei che venga generata una notifica locale quando l'app non è in esecuzione o qualcosa di simile, ma assolutamente non accade nulla, il che è strano.

Ho navigato il web negli ultimi due giorni cercando una soluzione, ma non sono riuscito a trovare nulla che indichi che dovrebbe funzionare.

Quanto segue è il mio notificationService.js dentro la mia 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; 
}]); 

Se aiuta, sto usando PushSharp tramite un'applicazione .NET al fine di consegnare le notifiche. Qualsiasi aiuto sarebbe molto apprezzato.

UPDATE: sto usando i seguenti quadri/libs:

  • ionico quadro 1.2.14-beta6
  • Cordova 4.2.0
  • PushPlugin

risposta

3

Per chiunque altrimenti chi ha tirato fuori i capelli per un paio di giorni come me, la soluzione è stata davvero semplice ... Mi mancavano due proprietà nella mia richiesta PushSharp QueueNotification st. Quindi, utilizzando l'esempio dato sul repo PushSharp github qui: 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\"}")); 

deve essere aggiornato per aggiungere le proprietà mancanti:

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

caso contrario, se la vostra applicazione sembra essere sviluppato utilizzando Cordova e la sua non attualmente in primo piano, niente, ripetere nulla accadrà.

punta il mio cappello a gdelavald con il suo commento sulla PushPlugin per avermi nella giusta direzione qui:

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

Problemi correlati