Как я могу дать своему уведомлению Firebase Cloud Messaging свойство тега? - PullRequest
0 голосов
/ 15 января 2020

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

Я использую React Native, React Native Firebase и API ConnectyCube. ConnectyCube работает с Firebase для управления пользователями и pu sh уведомлений - у меня все это работает.

Что я не могу понять, так это как отформатировать мой объект полезной нагрузки, чтобы включить дополнительные свойства, такие как tag, поскольку документация довольно крипта c. Я успешно отправляю message, который включен в свойство message, и в документах ConnectyCube вы увидите, что необязательное свойство iOS для badge - это просто еще одно свойство в объекте payload, но в в случае tag для android приведенный ниже код не работает:

export const sendNotification = async (calleeId, callLength, tagUUID) => {

  const callersUserName = await getUserNameFromStorage();

  const payload = JSON.stringify({
    message: callersUserName + '-' + callLength,
    tag: tagUUID,
  });

  const pushParameters = {
    notification_type: 'push',
    user: { ids: [calleeId] }, // recipients.
    environment: 'production', // environment, can be 'production'.
    message: ConnectyCube.pushnotifications.base64Encode(payload)
  };

  ConnectyCube.pushnotifications.events.create(pushParameters, function (error, result) {
  });

  setTimeout(() => {
    const payload2 = JSON.stringify({
      message: 'replacement-notification',
      tag: tagUUID,
    });

    const pushParameters2 = {
      notification_type: 'push',
      user: { ids: [calleeId] }, // recipients.
      environment: 'production', // environment, can be 'production'.
      message: ConnectyCube.pushnotifications.base64Encode(payload2)
    };

    ConnectyCube.pushnotifications.events.create(pushParameters2, function (error, result) {
    });
  }, 3000)
}

Когда уведомления pu sh имеют одинаковый тег, каждое уведомление будет заменено новым, которым я являюсь пытаюсь имитировать c с setTimeout.

Я получаю оба сообщения, но первое не заменяется вторым!

Любая помощь очень ценится! :)

1 Ответ

2 голосов
/ 16 января 2020

tag - это ключ полезной нагрузки для толчков типа Уведомления, но ConnectyCube отправляет все толчки как Данные.

При толчках данных есть полный контроль над тем, что делать с уведомлением (показывать или не показывать) , таким образом, есть способ добавить код в приложение, чтобы скрыть существующее уведомление, а затем показать новое, как только данные pu sh получили

...