3

Google firebase 通知メッセージからメッセージを抽出しようとしています。

ここに私のコードがあります:

@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{

    Log.d("FROM", "From: " + remoteMessage.getFrom() );
    sendNotification(remoteMessage.getNotification().getBody());
}

次のログでクラッシュしているremoteMessage.getFrom()間、正しい値が返されます。remoteMessage.getNotification().getBody()

.example.mturky.testfirebase W/dalvikvm: threadid=16: thread exiting with uncaught exception (group=0x4199ccf8)
05-29 18:26:09.886 15436-15583/com.example.mturky.testfirebase W/dalvikvm: threadid=16: uncaught exception occurred
05-29 18:26:09.887 15436-15583/com.example.mturky.testfirebase W/System.err: java.lang.NullPointerException
05-29 18:26:09.887 15436-15583/com.example.mturky.testfirebase W/System.err:     at com.example.mturky.testfirebase.MyFirebaseMessagingService.onMessageReceived(MyFirebaseMessagingService.java:31)
05-29 18:26:09.888 15436-15583/com.example.mturky.testfirebase W/System.err:     at com.google.firebase.messaging.FirebaseMessagingService.zzo(Unknown Source)
05-29 18:26:09.888 15436-15583/com.example.mturky.testfirebase W/System.err:     at com.google.firebase.messaging.FirebaseMessagingService.zzn(Unknown Source)
05-29 18:26:09.888 15436-15583/com.example.mturky.testfirebase W/System.err:     at com.google.firebase.messaging.FirebaseMessagingService.zzm(Unknown Source)
05-29 18:26:09.888 15436-15583/com.example.mturky.testfirebase W/System.err:     at com.google.firebase.iid.zzb$2.run(Unknown Source)
05-29 18:26:09.888 15436-15583/com.example.mturky.testfirebase W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-29 18:26:09.889 15436-15583/com.example.mturky.testfirebase W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-29 18:26:09.889 15436-15583/com.example.mturky.testfirebase W/System.err:     at java.lang.Thread.run(Thread.java:841)
05-29 18:26:09.889 15436-15583/com.example.mturky.testfirebase W/dalvikvm: threadid=16: calling UncaughtExceptionHandler
05-29 18:26:09.890 15436-15583/com.example.mturky.testfirebase E/AndroidRuntime: FATAL EXCEPTION: pool-4-thread-1 
Process: com.example.mturky.testfirebase, PID: 15436
java.lang.NullPointerException
at com.example.mturky.testfirebase.MyFirebaseMessagingService.onMessageReceived(MyFirebaseMessagingService.java:31)
at com.google.firebase.messaging.FirebaseMessagingService.zzo(Unknown Source)
at com.google.firebase.messaging.FirebaseMessagingService.zzn(Unknown Source)
at com.google.firebase.messaging.FirebaseMessagingService.zzm(Unknown Source)
at com.google.firebase.iid.zzb$2.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)

それを修正する方法はありますか?

4

6 に答える 6

10

質問の下に投稿された私のコメントを拡張するには:

remoteMessage.getNotification().getBody()notification-messageを送信している場合にのみ使用できます。firebase コンソールまたは
ペイロードを指定した server-api のいずれかを使用 ={ "notification" : { "body" : "my body"} }

クライアントで次のようなデータメッセージを送信する場合は{ "data" : { "mykey" : "myvalue"} }、次のメソッドを使用する必要があります。remoteMessage.getData()

于 2016-05-30T06:24:14.903 に答える
4
sendNotification(remoteMessage.getNotification().getBody()); 
  • これは、開発者コンソールのデフォルトのプッシュ通知用です。

使用する必要があります

sendNotification(remoteMessage.getData().get("message"));
  • これは任意のサーバーからのカスタム プッシュ用であり、サーバー側で示される「メッセージ」です。
于 2017-02-24T09:06:16.663 に答える
1

post json オブジェクトは次のようになります。

ヘッダー:

Content-Type : application/json
Authorization: key=API KEY

JSON オブジェクト

{

    "notification": {
        "title": "Title for the message",
        "body": "message content here"
    },
    "to": "registration id"
}

以下の行を使用して、Java で以下のように showNotification メソッドを呼び出します。

showNotification(remoteMessage.getData().put("","message"));
于 2016-10-20T13:05:46.920 に答える
0
  showNotification(remoteMessage.getData().put("","message"));

これは、通知がコンソールではなくサーバー側に届いた場合に機能します。

于 2016-09-20T09:39:08.213 に答える