2017-07-07 1 views
-1

Ich werde versuchen, Daten, wenn App im Hintergrund wie dieses FormatWenn App in Feuerbasis Hintergrund Benachrichtigung Benachrichtigung mit Nutzlast dann entfernten Nachrichtenmethodenaufruf haben oder nicht

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "notification" : { 
     "body" : "great match!", 
     "title" : "Portugal vs. Denmark", 
     "icon" : "myicon" 
    }, 
    "data" : { 
    "Nick" : "Mario", 
    "body" : "great match!", 
    "Room" : "PortugalVSDenmark" 
    } 
} 

so Daten über onMessageReceived geliefert werden (RemoteMessage Nachricht) zu bekommen, Methode oder nicht Ich weiß nicht, kann mir jemand für dieses Problem helfen.

+0

Wenn Sie FCM verwenden, wird es in 'onMessageReceived (RemoteMessage message)' geliefert –

Antwort

1

Damit Benachrichtigungen anklickbar sind, wenn sich Ihre App im Hintergrund befindet, benötigen Sie das Attribut click_action in Ihrer Benachrichtigungsnutzlast.

Bitte überprüfen Sie diese section der Firebase-Dokumente. Wenn Sie das Attribut click_action definieren, benötigen Sie außerdem ein entsprechendes <action>-Attribut in der <intent-filter> der Aktivität, die Sie starten möchten

Diese video erklärt es in ziemlich detaillierter Weise.

Beachten Sie jedoch, dass Sie das Attribut click__action nicht festlegen können, wenn Sie Benachrichtigungen von der Firebase-Konsole senden. Sie können dies nur tun, wenn Sie eine Benachrichtigung von Ihrem eigenen Admin-Server senden oder Firebase Cloud-Funktionen verwenden.

Schließlich können Sie in der Aktivität, die gestartet wird, zusätzliche Data mithilfe des Datenattributs festlegen (das auch in dem Dokument angezeigt wird, das ich oben verlinkt habe). Wenn Sie Ihre App starten, indem Sie auf eine Benachrichtigung klicken, können Sie die Benachrichtigungsdaten mit getIntent() abrufen. Weitere Informationen dazu finden Sie unter this answer.

Zum Beispiel, wenn Ihre Mitteilung Nutzlast die folgende Struktur hat,

payload = { 
    notification: { 
    title: `You ordered a new product`, 
    click_action : 'HANDLE_NOTIFICATION', 

    }, 
    data : { 
     product_id : 'ABC98292', 
     type : `Clothes`, 
     product_name : 'Cotton spring shirt' 
    } 
}; 

dann, setzen Sie den Filter in dem Tag der Aktivität, die Sie öffnen möchten, wenn die Benachrichtigung geklickt wird. Ein Beispiel dafür ist der folgende: -

<intent-filter> 
    <action android:name="HANDLE_NOTIFICATION" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
</intent-filter> 

Dann können Sie die product_id von der Benachrichtigung über getIntent().getStringsExtra("product_id") bekommen und so weiter.

Auf diese Weise öffnen Sie die erforderliche Aktivität und können sie mit den relevanten Details aus Ihrer Benachrichtigung ausfüllen.

Verwandte Themen