Ionic / Cordova-App erhält keine Push-Benachrichtigung im Hintergrund

Meine Android App empfängt keine Push-Benachrichtigungen im Hintergrund und sollte lautDokumentatio.

Eine Android-Anwendung auf einem Android-Gerät muss nicht ausgeführt werden, um Nachrichten zu empfangen. Das System aktiviert die Android-Anwendung über Intent Broadcast, wenn die Nachricht eintrifft, sofern die Anwendung mit dem richtigen Broadcast-Empfänger und den entsprechenden Berechtigungen eingerichtet ist.

eim Testen verschiedener Benachrichtigungen wurde festgestellt, dass die Push-Benachrichtigungen beim Schließen empfangen werden, und zwar genau dann, wenn die Benachrichtigungen das Attribut @ enthalte"Botschaft", wenn nicht, wirft es einfach weg. (Push-Benachrichtigungen sind nur JSON-Objekte.)

Meine Benachrichtigungen enthalten alle Arten von Attributen, einschließlich "alert", "id" und "title", aber nur "message" veranlasst Android, die App zu aktivieren.

Beispielbenachrichtigung, dass funktioniert nicht:

{ event: 'message',
  from: '947957531940',
  collapse_key: 'do_not_collapse',
  foreground: true,
  payload: 
   { alert: 'Mensaje de Prueba',
     title: 'Titulo Mensaje de Prueba' } }

Beispielbenachrichtigung, dass works:

{ event: 'message',
  from: '947957531940',
  message: 'Contenido del mensaje de prueba.',
  collapse_key: 'do_not_collapse',
  foreground: true,
  payload: 
   { alert: 'Mensaje de Prueba',
     title: 'Titulo Mensaje de Prueba',
     message: 'Contenido del mensaje de prueba.' } }

Ist dies ein Android-Standard oder mache ich etwas falsch in meiner App?

Meine App wurde mit Ionic und Cordova entwickelt.

PD: Entschuldigen Sie mein Englisch.

BEARBEITEN

Dies ist der Android-Push-Code im .run-Modul in app.js, wie ng-cordova Anweisungen angeben:

if (ionic.Platform.isAndroid()){

  var androidConfig = {
    "senderID": "94*************",
    "ecb": "window.casosPush"
  };

  try{
    var pushNotification = window.plugins.pushNotification;
  } catch (ex){

  }

  // Llamada en caso de exito
  var successfn = function(result){
    //alert("Success: " + result);
  };

  // Llamada en caso de error
  var errorfn   = function(result){
    window.alert("Error: " + result);
  };

  // Llamada de casos de notificacion push
  window.casosPush = function(notification){
    switch (notification.event){
      case 'registered':
        if (notification.regid.length > 0){
          $rootScope.data.token = notification.regid;
          //alert('registration ID = ' + notification.regid);
        }
      break;

      case 'message':

        $rootScope.mensajes.unshift(notification.payload);
        $localstorage.setArray('mensajes', $rootScope.mensajes);
        alert(JSON.stringify(notification));
      break;

      case 'error':
        alert('GCM error = ' + notification.msg);
      break;

      default:
        alert('An unknown GCM event has occurred');
      break;
    }
  };
  try{

    // Llamada de registro con la plataforma GCM 
    pushNotification.register(successfn,errorfn,androidConfig);
  } catch(notification){

  }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage