Не удается заставить setBackgroundMessageHandler работать - PullRequest
0 голосов
/ 27 октября 2019

В Reaction-native-Firebase v6 , я не могу заставить setBackgroundMessageHandler работать в моем приложении. Уведомления принимаются просто отлично, но обработчик не выполняется.

Я сделал это, как в руководстве безрезультатно.

import { AppRegistry } from 'react-native';
import messaging from '@react-native-firebase/messaging';
import AsyncStorage from '@react-native-community/async-storage';
import App from './App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

messaging().setBackgroundMessageHandler(async ({ data: { title, message } }) => {
    console.log('in background');
    // Save the notification locally
    const notificationList = JSON.parse(await AsyncStorage.getItem('@SM_NOTIFICATIONS')) || [];
    notificationList.push({ title, message, isRead: false });
    await AsyncStorage.setItem('@SM_NOTIFICATIONS', JSON.stringify(notificationList));
});

Ничего не произошло рядом с входящимуведомления. Я ожидал, что код для сохранения входящих уведомлений в AsyncStorage.

1 Ответ

0 голосов
/ 01 ноября 2019

Хорошо. Посоветовавшись с командой разработчиков, я наконец выяснил это.

Во-первых, setBackgroundMessageHandler должен быть вызван до registerComponent.

Во-вторых, не отправляет данные уведомления. Отправляйте только пользовательские данные (без вывода сообщений). Следовательно, вам нужно использовать локальное уведомление вместо push-уведомлений для отображения уведомления в системном трее.

Поскольку Firebase Console почему-то не поддерживает автоматическое push, яиспользовал FCM API v1 для отправки только данных. Вот мой пример:

POST https://fcm.googleapis.com/v1/projects/my-project/messages:send

{
    "validate_only": false,
    "message": {
        "name": "XXX",
        "data": {
            "title": "BG 2",
            "message": "BG BARU"
        },
        "topic": "C3166"
    }
}

Как видите, в JSON нет поля notification.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...