11

Ich versuche, eine bestimmte Aktivität zu öffnen, wenn der Benutzer mit einigen zusätzlichen Parametern auf die Benachrichtigung klickt, wenn sich die App im Hintergrund befindet. Ich benutze die click_action und es funktioniert gut, die App öffnet die gewünschte Aktivität.Firebase Cloud Messaging (FCM) - Startaktivität, wenn der Benutzer auf die Benachrichtigung mit Extras klickt

Jetzt muss der Server einen zusätzlichen Parameter, eine id, an diese Aktivität übergeben, damit ich die gewünschten Details zur Benachrichtigung darstellen kann. Wie bei einer E-Mail-Anwendung werden beim Klicken auf die Benachrichtigung die Details dieser spezifischen E-Mail geöffnet.

Wie kann ich das tun?

+0

Können Sie etwas Code teilen? Ich habe eine ähnliche Sache in meiner App, aber ich verwende GCM. In dem Dienst, der die Benachrichtigungen empfängt, füge ich einfach einen String extra zum Intent hinzu und benutze diesen, um zu sehen, welches Fragment ich öffnen soll. – Vucko

+0

Ich brauche keine Hilfe, meine App funktioniert :) gut für Sie, dass Sie es behoben haben – Vucko

+0

Haben Sie es gelöst? Ich hole das gleiche Problem. Ich habe die targetActivity gestartet, aber keine Extras aus Absicht bekommen. Hast du irgendeine Lösung? –

Antwort

32

Ok, habe ich die Lösung gefunden.

Dies ist die json, die ich von dem Server zu dem App

{ 
    "registration_ids": [ 
    "XXX", 
    ... 
    ], 
    "data": { 
    "id_offer": "41" 
    }, 
    "notification": { 
    "title": "This is the Title", 
    "text": "Hello I'm a notification", 
    "icon": "ic_push", 
    "click_action": "ACTIVITY_XPTO" 
    } 
} 

<activity 
    android:name=".ActivityXPTO" 
    android:screenOrientation="sensor" 
    android:windowSoftInputMode="stateHidden"> 
    <intent-filter> 
     <action android:name="ACTIVITY_XPTO" />   
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Wenn die App geschlossen ist oder im Hintergrund und der Benutzer klickt Am AndroidManifest.xml bin das Senden in der Benachrichtigung öffnet es mein ActivityXPTO, um den id_offer zu holen, den ich nur machen muss

Das ist es ...

+2

Siehe auch http://stackoverflow.com/questions/37554274/open-app-on-firebase-notification-received-fcm/37626817#37626817 –

+0

Danke für Ihre nette Antwort. Ich benutze deinen Weg, indem ich die targetActivity starte, habe aber keine Extras aus Absicht bekommen. Hast du irgendeine Lösung? –

+0

Hi @ Md.SajedulKarim, haben Sie ein Beispiel für den JSON, den Sie vom Server senden? Sie müssen die Extras innerhalb des "Daten" -Objekts Ihres json hinzufügen. – m4n3k4s

0

Fügen Sie Zusatzinformationen zu Intent hinzu, die Sie zum Starten von Activity verwenden, und verwenden Sie in der Methode onCreate getIntent(). GetExtras(), um sie zu verwenden. Zum Beispiel:

Ausgangsaktivität:

Intent intent = new Intent(context, TargetActivity.class); 
Bundle bundle = new Bundle(); 
bundle.putString("extraName", "extraValue"); 
intent.putExtras(bundle); 
startActivity(intent); 

In Aktivität

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bundle bundle = getIntent().getExtras(); 
    String value = bundle.getString("extraName"); 
    .... 
} 
+1

Es ist nicht ich, der die Aktivität startet. Dies wird vom System beachtet. Die App ist im Hintergrund oder geschlossen. – m4n3k4s

Verwandte Themen