1

ich für Push-Benachrichtigung folgende Plugin verwenden in Ionic2phonegap-plugin-Push auf ("Anmeldung") Ereignisse Brennen nicht, wenn App im Hintergrund ist

http://ionicframework.com/docs/native/push/

Erwartetes Verhalten: Wenn App ist geschlossen, und Benachrichtigung erhalten, Und wenn Benutzer die Benachrichtigung antippen, sollte auf ("Benachrichtigung") Ereignis ausgelöst werden, nachdem App geöffnet wird.

Tatsächliches Verhalten: Ich erhalte eine Benachrichtigung erfolgreich. Aber wenn Anwendung im Hintergrund oder geschlossen ist, zu dem Zeitpunkt, als ich eine Benachrichtigung erhalte und ich auf die Benachrichtigung tippe, wird das Ereignis ("Benachrichtigung") nicht ausgelöst.

Cordova Version 7.0.1 Android Version 6.2.3

Mein Code:

this.platform.ready().then(() => { 
    this.pushsetup(); 
}); 

private pushOptions: PushOptions; 
private pushObject: PushObject; 
pushsetup() { 
    // to check if we have permission 
    this.push.hasPermission() 
     .then((res: any) => { 
      if (res.isEnabled) { 
       console.log('We have permission to send push notifications'); 
       // configuration of push notification 
       this.pushOptions = { 
        android: { 
         senderID: 'XXXXXXXXXXX', 
         icon: 'icon_notification' 
        }, 
        ios: { 
         alert: 'true', 
         badge: true, 
         sound: 'false', 
         senderID: 'XXXXXXXXXXX' 
        }, 
        windows: {} 
       }; 
       this.pushObject = this.push.init(this.pushOptions); 

       // attach push events 
       this.storage.get('isPushRegistered') 
        .then(isPushRegistered => { 
         if(!isPushRegistered){ 
          this.pushObject.on('registration').subscribe((registration: any) => { 
           console.log('Device registered', registration) 
           this.storage.set('isPushRegistered', true) 
          }); 
         } 
        }) 


       this.pushObject.on('notification').subscribe((notification: any) => { 
        console.log('Received a notification', notification) 
       }); 
       this.pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error)); 
      } 
     }); 
} 

Also, auf meinem Code, können Sie this.pushObject.on sehen ("Mitteilung") Ereignis. Das wird nicht ausgelöst, wenn die App geschlossen wird.

Vielen Dank für Ihre Zeit und Unterstützung.

+0

Haben Sie „Inhalt "verfügbar": 1 in Ihren Nutzdaten, die vom Backend gesendet werden. – Vasanth

+0

Ja ich habe es eingestellt. Aber immer noch kein Erfolg. Plus ich habe phonegap Plugin-Dokumentation gelesen, die wie folgt lautet: "Wenn der Benutzer die Anwendung beendet hat, wird keine weitere Verarbeitung der Push-Daten auftreten." https://github.com/phonegap/plugin-push/blob/master/docs/PAYLOAD.md#push-message-arrives-with-app-in-background –

+0

Wenn App geschlossen ist, können Sie nicht ausführen alle Funktionen von Phone-Gap-Push. Aber wenn es im Hintergrund ist, kannst du es ausführen, indem du "content-available" einstellst: 1. – Vasanth

Antwort

2

Dies ist nicht das Problem mit clientseitigem Code. Dieses Problem tritt aufgrund der Benachrichtigungsnutzlast auf.

Von offiziellen Dokumenten von phonegap-plugin-Push

Benachrichtigungen verhält sich unterschiedlich auf dem Vordergrund/Hintergrund Stand des Empfang App und die Nutzlast Sie die App abhängig senden.

Zum Beispiel, wenn Sie die folgende Nutzlast senden: phonegap-plugin-Push/

{ 
    "notification": { 
    "title": "Test Notification", 
    "body": "This offer expires at 11:30 or whatever", 
    "notId": 10 
    } 
} 

Wenn Ihre App im Vordergrund steht, jede auf ('Mitteilung') Handler Sie sich registriert haben wird angerufen werden. Wenn sich Ihre App jedoch im Hintergrund befindet, wird die Benachrichtigung in der Taskleiste angezeigt.Wenn Sie auf die Benachrichtigung in der Taskleiste klicken, wird die App gestartet, aber Ihr on ('notification') Handler wird nicht aufgerufen, da Nachrichten, die Benachrichtigungs-Payloads haben, nicht dazu führen, dass die onMessageReceived-Methode aufgerufen wird.

Wenn Sie eine Nutzlast mit einer Mischung aus Benachrichtigung & Datenobjekte wie folgt senden:

{ 
    "notification": { 
     "title": "Test Notification", 
     "body": "This offer expires at 11:30 or whatever", 
     "notId": 10 
    }, 
    "data" : { 
     "surveyID": "ewtawgreg-gragrag-rgarhthgbad" 
    } 
} 

Wenn Ihre App im Vordergrund jeder auf (‚Mitteilung‘) Handler Sie sich registriert haben werden heißen. Wenn sich Ihre App im Hintergrund befindet, wird die Benachrichtigung in der Taskleiste angezeigt. Wenn Sie auf die Benachrichtigung in der Taskleiste klicken, wird die App gestartet und Ihr on ('notification') Handler wird nicht aufgerufen, da Nachrichten, die Benachrichtigungs-Payloads haben, nicht dazu führen, dass die Methode onMessageReceived plugins aufgerufen wird.

Meine empfohlene Format für Ihre Push-Nutzlast, wenn dieses Plugin (während sie sich von docs Google) 100% der Zeit funktioniert:

{ 
    "data" : { 
     "title": "Test Notification", 
     "body": "This offer expires at 11:30 or whatever", 
     "notId": 10, 
     "surveyID": "ewtawgreg-gragrag-rgarhthgbad" 
    } 
} 

Wenn Ihre App im Vordergrund Alle on ('notification') Handler, die Sie registriert haben, werden angerufen. Wenn sich Ihre App im Hintergrund befindet, wird die Benachrichtigung in der Taskleiste angezeigt. Durch Klicken auf die Meldung in der Taskleiste wird die App starten, und Ihr auf (‚Mitteilung‘) Handler wird mit folgenden Daten genannt werden:

{ 
    "message": "This offer expires at 11:30 or whatever", 
    "title": "Test Notification", 
    "additionalData": { 
     "surveyID": "ewtawgreg-gragrag-rgarhthgbad" 
    } 
} 

Link to the docs

+0

danke Freund. Das hilft mir sehr. –

0

Unten ist der Code hat für mich gearbeitet. Wenn die App geschlossen ist und Sie eine Benachrichtigung erhalten. Wenn Sie das Click-Ereignis behandeln möchten, indem Sie einige Nutzdaten untersuchen. Dann einen Blick auf folgenden Code haben:

pushObject.on('notification').subscribe((notification: any) => { 

    // this method will be called when you click on notification when app is closed 
    pushObject.finish() 
     .then(e => {}) 
     .catch(e => { console.log("ERROR NOTIFICATION",e); }) 

}).catch(e => { 
    console.log("ERROR NOTIFICATION",e); 
}) 
+0

Danke für dein Anliegen, kannst du deinen Code auf github teilen? Sowohl der Server- als auch der App-Code. Der Vorschlag, den du mir gegeben hast, habe ich versucht, aber immer noch nicht funktioniert. –

+0

Ich habe einen Kern erstellt, sieh es dir an. https://gist.github.com/coolvasanth/ba61710cb68af4097acfe603765c2df3 zögern Sie nicht zu fragen, wenn Sie irgendwelche Zweifel haben. – Vasanth

0

Sie die forground durch den folgenden Code überprüfen:

pushObject.on('notification').subscribe((data: any) => { 
     console.log('message -> ' + data.message); 
     //if user using app and push notification comes 
     if (data.additionalData.foreground) { 
     // if application open, show popup 
     } 
     else{ 
     //if user NOT using app and push notification comes 
     } 

Weitere Details Push-Benachrichtigungen in Ionic senden können Sie besuchen:

https://medium.com/@ankushaggarwal/push-notifications-in-ionic-2-658461108c59

Verwandte Themen