Мое приложение для Android не может получить сообщение fcm от python - PullRequest
1 голос
/ 03 апреля 2019

Я создаю приложение для Android с облачными сообщениями Firebase. Мое приложение может получать сообщения от консоли FCM. Тем не менее, он не может получить от Python, хотя ответ хороший. Не могли бы вы дать мне совет?

class fbMessaging():
    def __init__(self):
        cred = credentials.Certificate('./env/firebase.json')
        firebase_admin.initialize_app(cred)

    def send_to_device(self, text, token):
        message = messaging.Message(
            data = {
                'title': 'test',
                'body': text,
            },
            token = token,
        )
        response = messaging.send(message)
        return response

def main():
    fm = fbMessaging()
    res = fm.send_to_device('test', 'MY CORRECT TOKEN')
    print(res)

onMessageПолучено здесь

    override fun onMessageReceived(message: RemoteMessage?) {
        val from = message!!.from
        val data = message.data

        Log.d(TAG, "from:" + from!!)
        Log.d(TAG, "data:$data")

    }

Ниже напечатан ответ.

проекты / матч-XXXXX / сообщений / 0: 1554291593xxxxxx% 43f99108f9xxxxxx

1 Ответ

2 голосов
/ 03 апреля 2019

Используя Firebase Cloud Messaging , вы можете отправить Полезные данные уведомлений или Полезные данные или оба.

Полезная нагрузка уведомления содержит title - Название уведомления тело - орган уведомления

Названия клавиш фиксированы и не могут быть изменены.

Data Payload , с другой стороны, является просто парой ключ-значение, и вы можете отправить любое имя ключа со строковым типом в качестве значения.

FCM Поведение:

В зависимости от того, находится ли приложение на переднем плане или в фоновом режиме, а также от наличия полезных данных Notification, полезных данных Data или обоих, сообщение FCM принимается различными компонентами приложения.

Обработка уведомления FCM согласно документации,

  • Уведомительные сообщения доставляются, когда ваше приложение находится в фоновом режиме. В этом случае уведомление доставляется в системный трей устройства. При нажатии пользователем на уведомление по умолчанию открывается панель запуска приложения.

  • Сообщения как с уведомлением, так и с полезной нагрузкой данных, при получении в фоновом режиме. В этом случае уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнительных цель вашего запуска Активность.

Это поведение было четко объяснено в разделе получения сообщений .

Как вы можете видеть, если только в случае, когда полезная нагрузка Notification отправляется в автономном режиме, вам не нужно создавать пользовательский интерфейс Notification. В противном случае вам нужно создать интерфейс уведомлений при вызове onMessageReceived.

Использование Python:

Пример полезной нагрузки уведомления:

message = messaging.Message(
    notification=messaging.Notification(
        title='This is a Notification Title',
        body='This is a Notification Body',
    ),
    token=registration_token,
)

Пример полезной нагрузки данных:

message = messaging.Message(
    data={
        'score': '850',
        'time': '2:45',
    },
    token=registration_token,

И

message = messaging.Message(
    notification=messaging.Notification(
        title='This is a Notification Title',
        body='This is a Notification Body',
    ),
    data={
        'score': '850',
        'time': '2:45',
    },
    token=registration_token,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...