バージョン8.0以降FCMを使用していますが、notification
のデータは、のフォアグラウンドでのみ受信されますが、data
キーのデータは両方の状況で受信した場合、アプリがフォアグラウンドかバックグラウンドかに関係なく問題ありません。FCMがレガシーキーの後にバックグラウンドに入っていない
は、通知を受信する通知
$path_to_firebase_cm = 'https://fcm.googleapis.com/fcm/send';
$fields = array(
'to' => $token,
'notification' => array('title' => 'Title', 'body' => $message,'vibrate'=>"1",'sound'=>"mySound"),
'data' => array('message' => $message)
);
Androidのコード/クラスを送信するサーバでPHPスニペットです。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData().get("message"));
sendNotification(remoteMessage.getData().get("message"));
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
sendNotification(remoteMessage.getNotification().getBody());
}
}
}
コンパイル 'com.google.firebase:firebaseメッセージング:10.0.1'
プラグイン、クラスパス、およびサービスmanifiestですでに要件ごとに
apply plugin: 'com.google.gms.google-services'
を追加します
classpath 'com.google.gms:google-services:3.0.0'
<service android:name=".fcm.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".fcm.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
問題
アプリケーションがフォアグラウンドにある、データペイロード及び通知ペイロード両方のログが表示され、アプリケーションがログのバックグラウンドなしにあるときに表示なってきています。
古いプロジェクトでうまくいっていますが、新しいFirebaseアプリケーションを作成するときに問題が発生し、通知を送信するために新しいLEGACY SERVER KEYが発行されます。
レガシーキーはメッセージの配信に影響を与えません。将来の読者を助けるタイトルから離れてください。 –
それは影響を与えるべきではありませんが、Googleがサーバーのキーを更新した後にのみ、この問題に直面しています。 –
あなたが説明したのは、通知メッセージの正しい動作です(ドキュメントを参照)。 FCMが開始されて以来の行動は変わらなかった。サーバーコードが変更される可能性があります。 –