React Native: отключить звук / вибрацию при push-уведомлении

Я отправляю push-уведомления с сервера клиентам через Google FCM.

В приложении, поддерживающем реакцию, я зарегистрировал этих слушателей:

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)



Ответы (2)


При установке цели 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);
person hong developer    schedule 14.07.2019
comment
Привет, я не использую локальное уведомление :( - person Dan Dinu; 14.07.2019
comment
Если это так, его можно настроить в «Веб-консоли уведомлений Firebase». вы можете установить sound = disabled в расширенном параметре - person hong developer; 14.07.2019
comment
ты про консоль firebase говоришь? Я не могу найти такой вариант. Однако я бы хотел, чтобы звук / вибрация отсутствовала только для некоторых уведомлений, в то время как для других мне нужен звук. - person Dan Dinu; 15.07.2019
comment
@DanDinu firebase.google.com/docs/ cloud-messaging / Пожалуйста, обратитесь к этому. - person hong developer; 16.07.2019
comment
в моем случае это не имеет никакого эффекта. Проверить мой обновленный вопрос - person Dan Dinu; 16.07.2019
comment
@DanDinu Если вы удалите параметры звука из обновленного вопроса, как мой ответ, звука не будет. - person hong developer; 17.07.2019
comment
У меня его раньше не было, и он все еще играл / вибрировал - person Dan Dinu; 17.07.2019

Я не уверен, как вы настраиваете свои Push-уведомления, но вы можете пометить дополнительные данные в 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
     }
});

В целом, хотя push-уведомления обрабатываются ОС, а не приложением, вы можете подключиться к нему, как и вы, и выполнять действия по прибытии push-уведомления, но обычно все они поступают в том же стиле «Отбрось все и разберись со мной». .

И Android, и Apple поддерживают приоритет, но это может быть не то, что вам нужно: https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message

person FaD3y    schedule 23.07.2019