Нулевое значение в getStringExtra () - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь создать службу уведомлений, используя службу сообщений Firebase. Проблема в том, что когда я нажимаю на уведомление, это приводит меня к правильному намерению, но заголовок панели приложения не обновляется должным образом. Я передаю имя пользователя в намерении, но в getExtra () намерения он возвращает ноль. Я получаю правильный идентификатор пользователя, но не получаю правильное имя. Мой код для построителя уведомлений выглядит следующим образом:

   NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setSmallIcon(R.drawable.chitchat_icon)
                    .setContentTitle(notification_title)
                    .setAutoCancel(true)
                    .setContentText(notification_message);


    Intent resultIntent = new Intent(click_action);
    resultIntent.putExtra("user_id", user_id);
    resultIntent.putExtra("user_name",user_name);
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntentWithParentStack(resultIntent);
    stackBuilder.addParentStack(MainActivity.class);

    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );

    mBuilder.setContentIntent(resultPendingIntent);

Я получаю Intent Extra и задаю его в качестве заголовка для панели действий:

   //change in postion
        mChatUser = getIntent().getStringExtra("user_id");
        String userName = getIntent().getStringExtra("user_name");
...
 mTitleView.setText(userName);

Моя функция firebase js для генерации уведомлениявыглядит так:

 const fromUser = admin.database().ref(`/message_notifications/${user_id}/${notification_id}`).once('value');
   return fromUser.then(fromUserResult => {
   const from_user_id = fromUserResult.val().from;
   const message = fromUserResult.val().body;

    console.log('You have new  notification from :  ', from_user_id);

    const userQuery = admin.database().ref(`/Users/${from_user_id}/name`).once('value');
    return userQuery.then(userResult => {
    const userName = userResult.val();

    const deviceToken = admin.database().ref('/Users/'+ user_id +'/device_token').once('value');
    return deviceToken.then(result => {

    const token_id = result.val();

    const payload = {
     notification: {
      title: userName,
      body: message,
      icon: "default",
      click_action : "com.example.chitchat_TARGET_MESSAGE_NOTIFICATION"
     },
     data : {
     user_id : from_user_id,
     user_name: userName
     }
    };
}

Может кто-нибудь помочь мне, как решить эту проблему? Не могу найти проблему. Спасибо.

Обновление:

Я также хочу поделиться, что он работает нормально, если есть два разных устройства, но если я вхожу в систему и отправляю уведомление о выходе из системы и получаю уведомление о немневозможно получить имя пользователя.

enter image description here

...