React Native Firebase, уведомление не отображается, когда приложение находится на переднем плане, только на Android 8 или более поздней версии со сборкой пакета - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение с уведомлением о реагировании на исходное состояние, сообщение успешно получено, уведомление успешно создано и отображено на Android Nougat или более ранней версии, на Android Oreo или более поздней версии. У меня есть добавление channelId.родной run-android, но при использовании bundle (cd android && ./gradlew installRelease) мое уведомление не отображается только на переднем плане на Android Oreo или более поздней версии, на фоне работает.Не знал, что проблема в приемнике сообщений или при создании уведомления.Вот мой код ...

Я вызываю функцию ниже после получения разрешений для прослушивания сообщения, когда приложение находится на переднем плане

export const listening_message = () => {
return firebase.notifications().onNotification((notification) => {
    display_notification({
        notification_param: {
            sound: 'default',
            show_in_foreground: true,
        },
        title: notification.title,
        subtitle: notification.subtitle,
        body: notification.body,
        data: notification.data,
    });
});
}

, тогда это код для отображения уведомления

async function display_notification(parameter) {
let realmUser = await Realm.open(RealmData.User);

if(realmUser.objects(RealmDataName.User).length > 0) {
    let realmNotification = await Realm.open(RealmData.NotificationID);

    if(realmNotification.objects(RealmDataName.NotificationID).length == 0) {
        realmNotification.write(() => {
            realmNotification.create(RealmDataName.NotificationID, {
                id: 0,
            })
        });
    }

    if(realmNotification.objects(RealmDataName.NotificationID).length == 0) {
        realmNotification.write(() => realmNotification.create(RealmDataName.NotificationID, {id: 0}));
    }

    const channel = new firebase.notifications.Android.Channel(
        'channelId',
        'Channel Name',
        firebase.notifications.Android.Importance.High
    ).setDescription('Description of the channel');
    firebase.notifications().android.createChannel(channel);

    let new_notification = new  firebase.notifications.Notification(parameter.notification_param)
                                .setNotificationId(realmNotification.objects(RealmDataName.NotificationID)[0].id.toString())
                                .setTitle(parameter.title)
                                .setSubtitle(parameter.subtitle)
                                .setBody(parameter.body)
                                .setData({
                                    id: realmNotification.objects(RealmDataName.NotificationID)[0].id.toString(),
                                    ...parameter.data,
                                });

    if(Platform.OS == "android") {
        new_notification.android.setVibrate(1000)
                        .android.setSmallIcon('ic_launcher')
                        .android.setColor('#000000');

        if(Platform.Version <= 25) {
            new_notification.android.setPriority(firebase.notifications.Android.Priority.High);
        } else {
            new_notification.android.setChannelId("channelId");
        }                  
    } else if(Platform.OS == "ios") {
        new_notification.ios.setBadge(1);
    }

    firebase.notifications().displayNotification(new_notification);

    realmNotification.write(() => realmNotification.objects(RealmDataName.NotificationID)[0].id++);
}
}
...