Сбой приложения при отправке уведомления на передний план - PullRequest
0 голосов
/ 06 мая 2019

Когда я отправляю уведомление с полезными данными на переднем плане, мое приложение вылетает. Он работает нормально, когда он в фоновом режиме или отключен , но почему он не работает на переднем плане?

Это ошибка :

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) равно нулю, но я не знаю, почему оно равно нулю на переднем плане. Как я могу решить проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...