React Native:禁用推送通知上的声音/振动



我正在通过谷歌FCM从服务器向客户端发送推送通知。

在 react-native 应用程序中,我已经注册了这些侦听器:

this.notificationOpenedListener = firebase.notifications().onNotificationOpened(async (notificationOpen) => {
})
this.notificationListener = firebase.notifications().onNotification(async (notification) => {
});

notification数据包含收到通知时是否应该有声音/振动的信息。

但是,我找不到任何有关按需完全禁用声音/振动的文档。

我怎样才能做到这一点?

更新

我尝试在服务器端将声音设置为空字符串,但通知时仍然有声音/振动。

  var message = {
    data: {
      userId: fromUserId,
    },
    notification: {
      title: `My notifcation`,
      body: `Body`,
      sound: "",
    },
  }
  return sendToTopic(topicId, message)

向 React Native 项目添加推送通知可能很耗时,并且需要大量调整。请确保正确执行每个步骤,因为跳过一行可能会导致数小时的调试。

点击此链接 - 推送通知

设置notification目标时,请删除sound参数。

const notify = {
     ...message.notification,
     show_in_foreground: true,
     notify_type: message.NotificationType,
     obj_id: message.ObjectId,
     sound: '' // remove this
};
firebase.messaging().createLocalNotification(notify);

我不确定您如何设置推送通知,但您可以像这样将额外数据标记到 JSON 中:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

这意味着您可以向其添加布尔值,以便在到达时手动播放提示音,或者在订阅触发时不播放提示音,如下所示:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark",
      "playTone" : "true"
    }
  }
}
然后是在你的

回调中检查一个检查响应的情况:


this.notificationListener = firebase.notifications().onNotification(async (notification) => {
 if(notification.data.playtone) {
     // Play Tone
     } else {
     // Don't
     }
});
通常,虽然推送通知

由操作系统而不是应用程序处理,但您可以像以前一样挂接到它并在推送通知到达时执行操作,但通常它们都以相同的"删除所有内容并处理我"风格到达。

Android和Apple都支持优先级,但它可能不是你所追求的:https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message

相关内容

  • 没有找到相关文章

最新更新