Получение пустого дубликата уведомления на Android (iOS работает нормально)

#android #react-native #onesignal

#Android #react-native #onesignal

Вопрос:

Я столкнулся с этой проблемой с Android с самого начала. Когда должно прийти одно уведомление, на телефоне отображается 2. Я использую OneSignal, но не уверен, в чем проблема на самом деле.

Позвольте мне показать картинку для справки о том, что происходит:

Изображение уведомления

Уведомление, которое должно отображаться, является единственным внизу (с заголовком и описанием). Почему мои уведомления дублируются?

Позвольте мне показать вам мою настройку:

 import * as Notifications from 'expo-notifications';
import OneSignal from 'react-native-onesignal';
constructor(properties) {
        super(properties);
        //Remove this method to stop OneSignal Debugging test
        OneSignal.setLogLevel(6, 0);

        OneSignal.init("MY_ONE_SIGNAL_ID", { kOSSettingsKeyAutoPrompt: false, kOSSettingsKeyInAppLaunchURL: false, kOSSettingsKeyInFocusDisplayOption: 2 });
        OneSignal.inFocusDisplaying(2); // Controls what should happen if a notification is received while the app is open. 2 means that the notification will go directly to the device's notification center.
        OneSignal.promptForPushNotificationsWithUserResponse(myiOSPromptCallback);
        OneSignal.addEventListener('received', this.onReceived);
        OneSignal.addEventListener('opened', this.onOpened);
        OneSignal.addEventListener('ids', this.onIds);

        function myiOSPromptCallback(permission) {
            console.log(permission);
        }
    }

onReceived(notification) {
        console.log("Notification received: ", notification);
    }

onOpened(openResult) {
        console.log('Message: ', openResult.notification.payload.body);
        console.log('Data: ', openResult.notification.payload.additionalData);
        console.log('isActive: ', openResult.notification.isAppInFocus);
        console.log('openResult: ', openResult);
    }

registerForPushNotificationsAsync = async () => {
        if (Constants.isDevice) {
            const { status: existingStatus } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
            let finalStatus = existingStatus;
            if (existingStatus !== 'granted') {
                const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
                finalStatus = status;
            }
            if (finalStatus !== 'granted') {
                alert('Failed to get push token for push notification!');
                return;
            }
            const token = await Notifications.getExpoPushTokenAsync();
            console.log(token);
            this.setState({ expoPushToken: token });
        } else {
            alert('Must use physical device for Push Notifications');
        }

        if (Platform.OS === 'android') {
            Notifications.createChannelAndroidAsync('default', {
                name: 'default',
                sound: true,
                priority: 'max',
                vibrate: [0, 250, 250, 250],
            });
        }
    };


  

Комментарии:

1. Вы уже нашли решение для этого?