アプリがバックグラウンドにあるときに Firebase onMessageReceived が呼び出されない 質問する

アプリがバックグラウンドにあるときに Firebase onMessageReceived が呼び出されない 質問する

私は Firebase を使用して、アプリがバックグラウンドにあるときにサーバーからアプリに通知を送信するテストを行っています。通知は正常に送信され、デバイスの通知センターにも表示されますが、通知が表示されたり、通知をクリックしても、FCMessagingService 内の onMessageReceived メソッドが呼び出されません。

アプリがフォアグラウンドにあるときにこれをテストしたところ、onMessageReceived メソッドが呼び出され、すべて正常に動作しました。問題は、アプリがバックグラウンドで実行されているときに発生します。

これは意図された動作ですか、それともこれを修正する方法はありますか?

これが私のFBMessagingServiceです:

import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FBMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.i("PVL", "MESSAGE RECEIVED!!");
        if (remoteMessage.getNotification().getBody() != null) {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());
        } else {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));
        }
    }
}

ベストアンサー1

これは意図したとおりに動作しており、通知メッセージはアプリがフォアグラウンドにある場合にのみ onMessageReceived コールバックに配信されます。アプリがバックグラウンドにあるか閉じられている場合は、通知センターに通知メッセージが表示され、そのメッセージのデータは、ユーザーが通知をタップした結果として起動されるインテントに渡されます

JSON で を指定してclick_action、ユーザーが通知をタップしたときに起動するインテントを示すことができます。click_action が指定されていない場合は、メイン アクティビティが使用されます。

インテントが起動したら、

getIntent().getExtras();

通知メッセージとともに送信されたデータを含むセットを取得します。

通知メッセージの詳細については、ドキュメント

おすすめ記事