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.
Wenn Sie FCM verwenden, wird es in 'onMessageReceived (RemoteMessage message)' geliefert –