Firebase云消息传递(FCM) - 当用户使用附加功能单击通知时启动活动

m4n*_*k4s 14 android android-notifications firebase-cloud-messaging firebase-notifications

我正在尝试在用户点击通知时尝试打开特定活动,当应用在后台时,使用一些额外参数.我正在使用它click_action并且它工作正常,该应用程序打开所需的活动.

现在我需要服务器将一个额外的参数a传递id给此Activity,以便我可以提供与通知相关的所需详细信息.就像电子邮件应用程序一样,当我们点击通知时,会打开该特定电子邮件的详细信息.

我怎样才能做到这一点?

m4n*_*k4s 38

好的,我找到了解决方案.

这是我从服务器发送到应用程序的json

{
  "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"
  }
}
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

当应用程序关闭或在后台并且用户点击通知时它会打开我的ActivityXPTO,以检索id_offer我只需要做

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(idOffer);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

而已...

  • 另请参阅http://stackoverflow.com/questions/37554274/open-app-on-firebase-notification-received-fcm/37626817#37626817 (2认同)