2016-12-26 4 views
2

私はFirebase Messagingから通知を受け取るためにこのコードを持っています。キー/値を使用してデータを処理し、ログまたはEditTextに表示するにはどうすればよいですか?あなたはFCMメッセージ処理できるこの方法ではFirebase Cloud MessagingでDataペイロードをどのように処理できますか?

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = "MyFirebaseMsgService"; 

    /** 
    * Called when message is received. 
    * 
    * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. 
    */ 
    // [START receive_message] 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 


     // [START_EXCLUDE] 
     // There are two types of messages data messages and notification messages. Data messages are handled 
     // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type 
     // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app 
     // is in the foreground. When the app is in the background an automatically generated notification is displayed. 
     // When the user taps on the notification they are returned to the app. Messages containing both notification 
     // and data payloads are treated as notification messages. The Firebase console always sends notification 
     // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options 
     // [END_EXCLUDE] 

     // TODO(developer): Handle FCM messages here. 
     // Not getting messages here? See why this may be: 
     Log.d(TAG, "From: " + remoteMessage.getFrom()); 

     // Check if message contains a data payload. 
     if (remoteMessage.getData().size() > 0) { 

     } 

     // Check if message contains a notification payload. 
     if (remoteMessage.getNotification() != null) { 
      Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     } 

     // Also if you intend on generating your own notifications as a result of a received FCM 
     // message, here is where that should be initiated. See sendNotification method below. 
    } 
    // [END receive_message] 

    /** 
    * Create and show a simple notification containing the received FCM message. 
    * 
    * @param messageBody FCM message body received. 
    */ 
    private void sendNotification(String messageBody) { 
     Intent intent = new Intent(this, Home.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.com_facebook_close) 
       .setContentTitle("FCM Message") 
       .setContentText(messageBody) 

       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
    } 
} 

答えて

5

: remoteMessage.getNotification()getBody()

からの通知を送信する場合:あなたは、コンソールからの通知を送信する場合

を、データがでていますサーバー、データは次のとおりです。 remoteMessage.getData()

たとえば、データがjsonの場合、

あなたが使用することができます取得するキー/値ペアのデータのための
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    try { 
     if (remoteMessage.getNotification() != null) { 
      showNotification_fromConsole(new JSONObject(remoteMessage.getNotification().getBody())); 
     } else if (!remoteMessage.getData().isEmpty()) { 
      else showNotification_fromData(notifObject) 
     } 
    } catch (Exception e) { 
     Log.d("json error", e.toString()); 
    } 
} 

に:

@Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
    ... 
    Map<String, String> data = remoteMessage.getData(); 

    //you can get your text message here. 
    String text= data.get("text"); 
... 
} 
+0

おかげで、あなたが、私は「データ」を処理する必要がある - 通知、私はデータを意味するものではありませ –

+0

おかげで、あなたが、私私はこの構造(カスタムデータ)のデータを意味します:キー:値 –

+0

@HeroGuevara回答をもう一度編集しました – Saeid

関連する問題