Как настроить приоритет сообщения FCM в формате JSON?

Я создал облачную функцию, которая отправляет сообщения FCM и написана на Python. JSON настроен следующим образом... Но я не знаю, как установить message.android.priority и message.android.notification.notification_priorityhttps://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages

  • message.android.priority: Говорят, что это перечислимый тип, но в примерах на сайте используют строку «нормальный» или «высокий». Затем введите строчные буквы, хотя в документации написано Enum: «НОРМАЛЬНЫЙ», «ВЫСОКИЙ» — с прописными буквами.

  • message.android.notification.notification_priority: Это также Enum с «PRIORITY_DEFAULT», «PRIORITY_HIGH» и т. д.

Как установить Enum в JSON? Как строка? И если да, то имеет ли значение регистр символов?

Я не понимаю, каков тип элементов перечисления для значений этих двух ключей... Это строки типа «ВЫСОКИЙ» и «НОРМАЛЬНЫЙ» или какие-то целочисленные константы?

И второстепенный вопрос... Что мне нужно настроить, чтобы мое сообщение FCM доставлялось сразу, даже когда экран телефона закрыт, и оповещало пользователя звуком?

# Construct the message payload
message = {
  'message': {
      'token': app_token,
      'android': {
          'priority': 'high',
          'notification': {
              'title': msg_title,
              'body' : msg_body,
              'icon' : 'ic_app_mono',
              'color': '#FF0000',
              'sound': 'default', 
              'notification_priority': 'PRIORITY_DEFAULT' }} 
  }}

# Use ADC to get the credentials
credentials = default()[0]

# Send the message
result = SendMessage(credentials, message)

Насколько я понимаю, для немедленной "шумной" доставки нужны "message.android.priority": "high", "message.android.notification.notification_priority": "PRIORITY_HIGH" и "message.android.notification.visibility": "PUBLIC". PRIORITY_HIGH и PRIORITY_MAX эквивалентны , но сохранены для совместимости. Обратитесь к документации Каналы и категории, чтобы узнать о других факторах, влияющих на обработку уведомлений.

samthecodingman 27.08.2024 10:20
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ключ — notification_priority, а значение должно быть одним из enumNotificationPriority: PRIORITY_UNSPECIFIED, PRIORITY_MIN, PRIORITY_LOW, PRIORITY_DEFAULT, PRIORITY_HIGH, PRIORITY_MAX... на отправляющей стороне.

Эквивалентом на Android (локально) будет NotificationManager.IMPORTANCE_*. На самом деле не имеет значения, насколько «важно» уведомление, важно только то, что устанавливается при его передаче NotificationManager... на принимающей стороне.

Но как мне передать значение PRIORITY_HIGH в JSON в виде строки? Нижний или верхний регистр? Или не имеет значения? Итак, вы хотите сказать, что приоритет канала уведомления на стороне получателя переопределяет приоритет сообщения?

Marus Gradinaru 26.08.2024 18:57

@MarusGradinaru Основываясь на том, как Firebase Admin Node.js SDK проверяет полезные нагрузки, значения перечисления будут просто строками (например, notification_priority: "PRIORITY_HIGH"). Однако важно отметить, что message.android.priority — это приоритет отправки сообщений через FCM (без учета регистра), а message.android.notification.notification_priority — это приоритет отображения (насколько большое/высокое уведомление отображается в списке уведомлений) (с учетом регистра для достижения наилучших результатов).

samthecodingman 27.08.2024 10:07

Другие вопросы по теме