3

Firebase Cloud Messagingをテストしています。RemoteMessage.GetNotification()は、リクエストがFirebaseコンソールからのものでない場合はnullを返しますか?

私がメッセージを送信するためにFirebaseコンソールを使用している場合 - 私のコードI通知オブジェクトに設定された値で - ない問題:

public override void OnMessageReceived(RemoteMessage message) 
    { 
     base.OnMessageReceived(message); 

     Firebase.Messaging.RemoteMessage.Notification oNotification; 

     oNotification = message.GetNotification(); 

私は通知を送信するためにhttp://requestmaker.com/を使用しています - そして、すべてが正常に動作します - それが送信され、私はmessageIDを取得します。

POST /fcm/send HTTP/1.1 
Host: fcm.googleapis.com 
Accept: */* 
Authorization: key=not-a-real-key0omClYhniZaIAercMVzeFHEG508USi8lud9pxC-SzxAAbR2mflAfVNsfrbrsPJxoFYTr15ytRn9aqWSQXm5x00AOwu2Wl6mWwTcm9l6G 
Content-Length: 188 
Content-Type: application/x-www-form-urlencoded 

ただし、oNotification = message.GetNotification();はnullを返します。 質問は - なぜですか?

+1

こんにちは。 「通知」ペイロードの代わりに['data'](https://firebase.google.com/docs/cloud-messaging/android/receive#handling_messages)ペイロードを送信している可能性があります。 Firebaseコンソールを使用する場合、送信されるメッセージは常に「通知」ペイロードメッセージとして扱われます。依頼者と一緒に送信している*リクエストデータを投稿できますか? –

+1

リクエストURL:https://fcm.googleapis.com/fcm/send - 認証キー= AAAAAXu6AHE:APA9 ....要求データREGISTRATION_ID = eMM1bnJVxT8:APA91bEiVop08dRKLTSF9LdW4mGql8EFw9CwXjLqdAqxs7D8A_GF_D6DU7QPyy5JahzZoQVraJmxTQiV0UTUet_hbr1G_9xNv87Vpu4yCgN751hVF07hdRx-hlJRcfUEC82IlvaV-9AD –

+1

@AL。それは良い点です! https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages –

答えて

4

notificationペイロードの代わりにdataペイロードを送信していたようです。 Firebaseコンソールを使用する場合、送信されるメッセージは常にnotificationペイロードメッセージ(またはアドバンスオプションでカスタムのキーと値のペアを追加した場合は両方の組み合わせ)として扱われます。 FCM Message Typesを参照してください。

リクエストメーカーを使用している場合にのみ、data - ペイロードのみを送信している可能性があります。あなたのコードでは、あなただけのnotificationペイロードタイプでメッセージを処理している:

message.GetNotification(); 

私はAndroidのXamarinと完全に慣れていないんだけど、通常FCMで、RemoteMessage.getData()を呼び出すことによってdataペイロードを取得する方法もありますあなたはdata-onlyペイロードを送信することを決定する必要があります。

関連する問題