2017-04-04 11 views
0

私はサポートのためにメッセージを送信するためにウェブサービスを呼び出すAndroidアプリを持っています。SDK経由で送信する際、Firebase通知のカスタムデータを読み取ることができません

メッセージに応答できる場所を開発するWebサイトがあり、そのためにFirebaseを使用しています。私は今、私は次のJavaコードが

String notificationTitle = remoteMessage.getNotification().getTitle(); 
String notificationBody = remoteMessage.getNotification().getBody(); 

を使用してメッセージのタイトルを抽出することができる午前Androidアプリで

var applicationID = "snip"; 
var senderId = "snip"; 
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 
tRequest.Method = "post"; 
tRequest.ContentType = "application/json"; 

var data = new 
{ 
    to = model.RequestFirebaseID, 
    notification = new 
    { 
     body = model.ResponseMessage, 
     title = model.ResponseTitle 
    } 
}; 

:これまで私たちはそうのようなタイトルとメッセージを送りました。 idというカスタムフィールドを返送しようとしているので、私がしようとidの金融商品取引法を読み取るために、私はこのコードを持ってFirebaseを使用してデバイスに戻ってメッセージを送信するとき、私は、だから今

var data = new 
{ 
    to = model.RequestFirebaseID, 
    notification = new 
    { 
     body = model.ResponseMessage, 
     title = model.ResponseTitle, 
     requestid = model.id 
    } 
}; 

になるようにコードを修正d。

String messageID = remoteMessage.getData().get("requestid"); 

ただし、この原因はnullになります。

これをFirebaseコンソール経由で送信するテストを試みましたが、カスタムデータセクションにrequestidを追加して値を与え、上記のコードを読むことができます。

ウェブアプリケーション経由で送信しているときに、requestidフィールドが表示されないようです。

答えて

1

dataメッセージをペイロードに含める必要があります。このような何か:

var payload = new 
{ 
    to = model.RequestFirebaseID, 
    notification = new 
    { 
     body = model.ResponseMessage, 
     title = model.ResponseTitle 
    }, 
    data = new 
    { 
     requestid = model.id 
    } 
}; 

私はそれを区別するために​​にルート変数名を変更しました。

Firebase Notificationsコンソールを使用してメッセージを送信するときにカスタムデータを追加すると、notificationメッセージの代わりにdataメッセージパラメータにメッセージが含まれます。この2つの違いについては、Message Typesのマニュアルを参照してください。

+0

ええ、それを理解した後、ありがとう – andrewb

関連する問題