Я создал облачную функцию, которая отправляет сообщения FCM и написана на Python. JSON настроен следующим образом... Но я не знаю, как установить message.android.priority
и message.android.notification.notification_priority
https://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)
Ключ — notification_priority
, а значение должно быть одним из enum
NotificationPriority:
PRIORITY_UNSPECIFIED
, PRIORITY_MIN
, PRIORITY_LOW
, PRIORITY_DEFAULT
, PRIORITY_HIGH
, PRIORITY_MAX
... на отправляющей стороне.
Эквивалентом на Android (локально) будет NotificationManager.IMPORTANCE_*. На самом деле не имеет значения, насколько «важно» уведомление, важно только то, что устанавливается при его передаче NotificationManager
... на принимающей стороне.
Но как мне передать значение PRIORITY_HIGH
в JSON в виде строки? Нижний или верхний регистр? Или не имеет значения? Итак, вы хотите сказать, что приоритет канала уведомления на стороне получателя переопределяет приоритет сообщения?
@MarusGradinaru Основываясь на том, как Firebase Admin Node.js SDK проверяет полезные нагрузки, значения перечисления будут просто строками (например, notification_priority: "PRIORITY_HIGH"
). Однако важно отметить, что message.android.priority
— это приоритет отправки сообщений через FCM (без учета регистра), а message.android.notification.notification_priority
— это приоритет отображения (насколько большое/высокое уведомление отображается в списке уведомлений) (с учетом регистра для достижения наилучших результатов).
Насколько я понимаю, для немедленной "шумной" доставки нужны
"message.android.priority": "high"
,"message.android.notification.notification_priority": "PRIORITY_HIGH"
и"message.android.notification.visibility": "PUBLIC"
. PRIORITY_HIGH и PRIORITY_MAX эквивалентны , но сохранены для совместимости. Обратитесь к документации Каналы и категории, чтобы узнать о других факторах, влияющих на обработку уведомлений.