Когда я отправляю уведомление с полезными данными на переднем плане, мое приложение вылетает. Он работает нормально, когда он в фоновом режиме или отключен , но почему он не работает на переднем плане?
Это ошибка :
java.lang.NullPointerException
в ... MyFirebaseMessagingService.onMessageReceived (MyFirebaseMessagingService.java:57)
и ошибка указывает строку, заданную в MyFirebaseMessagingService:
if(dataType.equals(getString(R.string.direct_message))){
Компилятор уже улавливает проблему и говорит:
При вызове метода «равно» может появиться «java.lang.NullPointerException»
Это небольшая часть службы обмена сообщениями Firebase класс:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
private static final int BROADCAST_NOTIFICATION_ID = 1;
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
}
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
String notificationBody = "";
String notificationTitle = "";
String notificationData = "";
try{
notificationData = remoteMessage.getData().toString();
notificationTitle = remoteMessage.getNotification().getTitle();
notificationBody = remoteMessage.getNotification().getBody();
}catch (NullPointerException e){
Log.e(TAG, "onMessageReceived: NullPointerException: " + e.getMessage() );
}
Log.d(TAG, "onMessageReceived: data: " + notificationData);
Log.d(TAG, "onMessageReceived: notification body: " + notificationBody);
Log.d(TAG, "onMessageReceived: notification title: " + notificationTitle);
String dataType = remoteMessage.getData().get(getString(R.string.data_type));
if(dataType.equals(getString(R.string.direct_message))){
Log.d(TAG, "onMessageReceived: new incoming message.");
String title = remoteMessage.getData().get(getString(R.string.data_title));
String message = remoteMessage.getData().get(getString(R.string.data_message));
String messageId = remoteMessage.getData().get(getString(R.string.data_message_id));
sendMessageNotification(title, message, messageId);
}
}
}
Полагаю, (getString(R.string.direct_message)
равно нулю, но я не знаю, почему оно равно нулю на переднем плане. Как я могу решить проблему?