1

GCMは正常に機能していましたが、サーバーから送信された場合、fcmは通知を受信しません.firebaseコンソールから送信する場合にのみ機能します。問題はアプリにある配列形式にあるとほぼ確信しています:

        String messageBody = remoteMessage.getNotification().getBody();

そしてPHPで:

        $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );

どう思いますか

4

1 に答える 1

2

あなたの質問では、次のようなペイロードを持つメッセージである data-messageを送信しています。{"registration_ids" : ["token1"], "data" : { "key1" : "value1"}}

dataペイロード (例では key1:value1)を受け取るには、クライアント アプリで次を使用する必要があります。

String value1 = remoteMessage.getData().get("key1");

FCM はdisplay-messagesもサポートしています。
例: {"registration_ids" : ["token1"], "notification" : { "body" : "hello"}}
これらのメッセージは、アプリがバックグラウンドにあるときに自動的に表示されます。onMessageReceived()また、アプリが既に開いていてフォアグラウンドにある場合にのみ呼び出します。この 2 番目のケースでは、次の方法で元の通知のフィールドにアクセスできます。remoteMessage.getNotification().getBody()

表示メッセージには{"data" : { "key1" : "value1"}}.
アプリがフォアグラウンドにある場合、データ メッセージのようにこれらの値にアクセスできます。
アプリが bakground にある場合は、ユーザーが通知をクリックしてアクティビティを開始するまで待つ必要があります。
その時点で、次の方法でデータにアクセスできます。getIntent().getExtras()

PS: Firebase Web コンソール経由で送信される通知は、表示メッセージのみです。

于 2016-06-05T03:52:55.380 に答える