2016-07-15 2 views
2
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService{ 

    String TAG = "FirebaseMessagingService"; 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage){ 

     Log.i(TAG," input string :"+ String.valueOf(remoteMessage.getData())); 
     /** 
     * Parse remote input and pass id, action, frequency and payload to eventHandler. 
     * **/ 

     String messageType = remoteMessage.getMessageType();// messageType is null always 
     if(messageType.equalsIgnoreCase("Data")){ 
      Log.i(TAG, " Data notification received"); 
     } 
     else if(messageType.equalsIgnoreCase("Notification")){ 
      Log.i(TAG, " Push notification received"); 
     } 
} 

ответ

1

Я не уверен, что должно быть возвращено . Но кажется маловероятным, что он возвращает либо Data, либо Notification, так как a single message can contain both notification and data information.

+0

Благодаря Frank. Я просто подумал об этом и отправил свой ответ, не используя getMessageType() как таковой. –

0

Спасибо. Я действительно понял способ проверить тип сообщения как таковой. Для меня работает без использования getMessageType.

Данные карты = remoteMessage.getData(); RemoteMessage.Notification notification = remoteMessage.getNotification();

if (data.isEmpty()) { // message type is notification. 
     parseDataMessage(remoteMessage); 
    } else { // message type is data. 
     parseNotificationMessage(remoteMessage); 
    } 
0

Из документации это выглядит, как будто это параметр, который можно установить при отправке сообщений и с помощью SDK here.

public RemoteMessage.Builder setMessageType (String messageType)

Однако при отправке сообщений с помощью API Firebase REST, я не видел возможность указать тип сообщения.

0

Вы должны попробовать, как это ...

if(getIntent().getExtras() != null && getIntent().getExtras().get("your_data_key") != null) { 
String strNotificaiton = getIntent().getExtras().get("your_data_key").toString(); } 
Смежные вопросы