wake-up-neo.com

Firebase Cloud Messaging (FCM) - Startaktivität, wenn der Benutzer die Benachrichtigung mit Extras klickt

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 den click_action und es funktioniert gut, die App öffnet die gewünschte Aktivität.

Jetzt muss der Server dieser Aktivität einen zusätzlichen Parameter, eine id, übergeben, damit ich die gewünschten Details der Benachrichtigung anzeigen kann. Wie bei einer E-Mail-Anwendung werden beim Öffnen der Benachrichtigung die Details der angegebenen E-Mail geöffnet.

Wie kann ich das machen?

13
m4n3k4s

Ok, ich habe die Lösung gefunden.

Dies ist der Json, den ich vom Server an die App sende

{
  "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"
  }
}

Im AndroidManifest.xml

<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 ist und der Benutzer auf die Benachrichtigung klickt, wird mein ActivityXPTO geöffnet

public class ActivityXPTO extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ...

        String idOffer = "";

        Intent startingIntent = getIntent();
        if (startingIntent != null) {
            idOffer = startingIntent.getStringExtra("id_offer"); // Retrieve the id
        }

        getOfferDetails(id_offer);
    }

    ...
}

Das ist es...

37
m4n3k4s

Fügen Sie der Absicht, die Sie zum Starten von Activity verwenden, zusätzliche Informationen hinzu. In der Methode onCreate verwenden Sie getIntent (). Zum Beispiel:

Startaktivität:

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

In der Tätigkeit

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

    Bundle bundle = getIntent().getExtras();
    String value = bundle.getString("extraName");
    ....
}
0
Oleg Vladimirov