Firebase-admin- python: настроить сообщение так, чтобы оно было получено в фоновом режиме устройством Android - PullRequest
1 голос
/ 17 июня 2020

У меня есть задача с сельдереем, которая отправляет сообщения моему клиенту через firebase-admin. В процессе разработки я использовал такие уведомления, и все работало нормально (мое приложение React-Native получало сообщения как на переднем плане, так и в фоновом режиме, как и ожидалось):

message = messaging.Message(
        data={
            'text': msg.text,
        },
        token=registration_token,
    )

response = messaging.send(message)

Но после выпуска мое Android устройство отказался получать сообщение в фоновом режиме, если его приоритет не установлен на «высокий». И, очевидно, я не могу просто добавить ключ «приоритет» к моей старой простой конфигурации (я попробовал и получил ValueError: Message. android должен быть экземпляром класса Android .config). Итак, я нашел пример того, как установить приоритет в firebase-admin docs :

def android_message():
# [START android_message]
message = messaging.Message(
    android=messaging.AndroidConfig(
        ttl=datetime.timedelta(seconds=3600),
        priority='normal',
        notification=messaging.AndroidNotification(
            title='$GOOG up 1.43% on the day',
            body='$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.',
            icon='stock_ticker_update',
            color='#f45342'
        ),
    ),
    topic='industry-tech',
)
# [END android_message]
return message

Теперь мой вопрос: как мне установить регистрационный токен в этой более сложной конфигурации сообщения? Токен сейчас куда-то уходит? Думаю, мне здесь не хватает чего-то очень очевидного, поэтому буду благодарен за любую помощь и подсказки.

1 Ответ

1 голос
/ 17 июня 2020

Образец, который вы нашли, отправляет сообщение на топи c, который представляет собой именованный ключ, на который клиенты могут подписаться. Таким образом, здесь не требуется отправлять токен, поскольку это общедоступная система доставки / подписка.

Если вы хотите доставить на указанный токен c, замените ключ topic на token, как показано на этот пример из документации по отправке сообщений на указанные c устройства :

# This registration token comes from the client FCM SDKs.
registration_token = 'YOUR_REGISTRATION_TOKEN'

 # See documentation on defining a message payload.
message = messaging.Message(
    data={
        'score': '850',
        'time': '2:45',
    },
    token=registration_token,
)

# Send a message to the device corresponding to the provided
# registration token.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...