Firebaseプッシュ通知を使用している間に、データペイロード(たとえば、アクティビティ名など)を処理するケースが2つあります。
ケース1:あなたのアプリがフォアグラウンドで実行されている場合(現在の画面上で実行されている)あなたはFirebaseMessagingService
クラスを拡張する必要があり、あなたのクラスでオーバーライドされているRemoteMessage object
onMessageReceived(RemoteMessage remoteMessage)
のメソッドからのデータペイロードになるだろう。例えば
:
public class FirebaseMessagingServiceHelper extends FirebaseMessagingService {
private final String TAG = "FirebaseMsgServiceHelper";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Map<String, String> dataPayload = null;
dataPayload = remoteMessage.getData();
}
}
ケース2:あなたのアプリがバックグラウンドで実行されている場合は、あなたのアプリのランチャーActivity
における意思にエキストラとしてデータペイロードになるだろう。例については
: -
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//get notification data info
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
//bundle must contain all info sent in "data" field of the notification
}
}
しかし、私は、ユーザーがclick_action
でNotification Drawer
に通知し、データペイロード内をクリックしたときに開いていることになっているActivity
の名前を得たときに、これらの2つのケースが正常に動作しませんでしたdata
。
しかし、私はデータのすべてをダウンパット時にアプリがonMessageReceived(RemoteMessage remoteMessage)
方法でRemoteMessage object
にデータペイロード毎回受け取ることになるあなたのアプリフォアグラウンドまたはバックグラウンドで実行されているかどうか、それは両方のケースi.e.
に私のためにうまく働きました。
以下は、私が知り得た場所からのリンクです。 Firebase FCM notifications click_action payload
はフォアグラウンドでアプリですか?あなたのjsonフォームの外観はどうですか? –
こんにちは。コード、ログ、またはいくつかのサンプルペイロードなしで何かをコメントするのは難しいです。それらをあなたのポストに加えてください。 –