#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. Вы уже нашли решение для этого?