0

我正在尝试为我的 Firebase Cloud Messaging 通知在 Android 上提供一个标签属性,如此处和此处所述以便我可以在必要时替换已收到的通知。

我正在使用 React Native、React Native Firebase和 ConnectyCube API。ConnectyCube 与 Firebase 一起处理用户管理和推送通知——我已经完成了所有这些工作。

我不知道如何格式化我的有效负载对象以包含可选属性,例如tag文档相当神秘。我成功发送了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)
}

当推送通知具有相同的标签时,每个通知都将被替换为我试图模仿的较新的通知setTimeout

我收到了两条消息,但第一条没有被第二条取代!

任何帮助深表感谢!:)

4

1 回答 1

2

tag是通知类型推送的有效负载键,但 ConnectyCube 将所有推送作为数据发送。

通过数据推送,可以完全控制如何处理通知(显示或不显示),因此有一种方法可以在应用程序中添加代码以隐藏现有通知,然后在收到数据推送后显示新通知

于 2020-01-16T15:23:11.480 回答