AndroidアプリでメッセージングサービスにFirebaseを使用しています。私はFirebaseをかなり研究しており、私はそれがwhether the app if running in the foreground or now will change the type of data received in the onMessageReceived methodであることを理解しています。アプリがバックグラウンドのときにFirebase onMessageReceivedが呼び出されない
私が達成しようとしているのは、Remotemessageからの受信データを解析し、カスタムタグに応じて異なるものを実行することです。 IEのデータマップに「My_Custom_Tag」というフィールドが含まれている場合は、標準のfirebaseメッセージを完全に上書きしてカスタムフィールドをポップアップして書きたいと考えています。
問題は、アプリがバックグラウンドで実行されているときに、私がonMessageReceivedに入れたコードは決してになります。アプリがフォアグラウンドで実行されているときはうまく動作しますが、アプリがバックグラウンドにある場合は何も検出/受信しません。
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Map<String, String> aMap = remoteMessage.getData();
//Custom object here for easier parsing
PushNotificationsPojo pojo = this.convertResponseToPojo(aMap);
if(pojo == null){
passToFirebase(remoteMessage);
return;
}
if(pojo.getData().getCustomTag().equals(PushNotificationsPojo.ID_TAG_CHAT_MESSAGE)) {
createCustomNotification1(pojo);
} else if (pojo.getData().getCustomTag().equals(PushNotificationsPojo.ID_TAG_SOME_OTHER_MESSAGE)){
createCustomNotification2(pojo);
} else if (pojo.getData().getCustomTag().equals(PushNotificationsPojo.ID_TAG_STUFF_AND_WHATNOT)) {
createCustomNotification3(pojo);
} else {
passToFirebase(remoteMessage);
}
}
私の質問があり、私はそれを渡す、着信データをチェックし、タグ情報を決定し、どちらかに決めることができるように、私は編集MyFirebaseMessagingService行くのですか:ここで
は、以下のいくつかのサンプルコードです私のアプリがバックグラウンドで実行されている間、標準的な処理を使用するか、firebaseに渡したり、独自のカスタム表示通知を書くことはできません。ありがとうございます!
PS、万が一Firebase-Dungeon-Master Frank van Puffelenに考えがありますか?
送信するFCMメッセージにはどのようなタイプのペイロードが含まれていますか?通知、データ、またはその両方? – kws
両方とも、ほとんどの場合です。それはクロスプラットフォームなので、IOSは通知オブジェクトを送信する必要がありますが、私たちのデータの大半はDataオブジェクトからのものです。 – Silmarilos