React Native — очистка предыдущих push-уведомлений при получении локального push-уведомления

#javascript #ios #react-native #push-notification #react-native-push-notification

#javascript #iOS #react-native #push-уведомление #react-native-push-уведомление

Вопрос:

Я использую react-native-push-notification для планирования и генерации локальных push-уведомлений в React Native, и я пытаюсь очистить ранее полученное уведомление о получении любого запланированного уведомления или автоматически удалить текущее полученное уведомление через некоторое время, но я не могу найти способ добиться этого на iOS. Один из способов — использовать timeoutAfter свойство, предоставляемое библиотекой, которая предназначена только для Android. Для iOS другой способ — использовать PushNotificationIOS.removeAllDeliveredNotifications() , если я могу вызвать любой метод при получении локального уведомления, но onNotification() не срабатывает при получении локального уведомления. Он срабатывает только при получении или нажатии удаленного уведомления или при нажатии локального уведомления. Есть ли какой-либо другой способ или какая-либо другая библиотека для достижения этой цели? Это мой код для планирования локальных уведомлений:

 PushNotification.localNotificationSchedule({
    channelId: 'channelId',
    id,
    message: '...',
    timeoutAfter: 10000,
    soundName: 'default',
});
  

конфигурация уведомлений:

 PushNotification.configure({
    onRegister: function (token) {
        console.log('TOKEN:', token);
    },
    onNotification: function (notification) {
        console.log('NOTIFICATION:', notification);
    },
    onAction: function (notification) {
        console.log('ACTION:', notification.action);
        console.log('NOTIFICATION:', notification);
        // process the action
    },
    onRegistrationError: function (err) {
        console.error(err.message, err);
    },
    permissions: {
        alert: true,
        badge: true,
        sound: true,
    },
    popInitialNotification: true,
    requestPermissions: Platform.OS === OS.IOS,
});
  

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

1. Для iOS функциональность, предоставляемая текущей сторонней библиотекой ReactNative, по сути, реализуется собственным интерфейсом. Обычно, когда вы не можете решить некоторые проблемы, вы можете попробовать настроить общедоступный интерфейс, но такой интерфейс подходит только для iOS.

Ответ №1:

Хотя это в целом надежная и хорошо поддерживаемая библиотека, я начал сталкиваться с некоторыми из тех же проблем react-native-push-notification . В конце концов, я перешел к Notifee : https://notifee.app / для генерации / обработки локальных событий уведомлений. Он довольно хорошо справляется с устранением основных различий между iOS и Android, предоставляя довольно единообразный API для разных платформ. Похоже, что он предоставляет API-интерфейсы отмены, хотя в моем случае мне не нужно было их реализовывать. Производственная лицензия требует платы, но в этом не было ничего сумасшедшего, и в моем случае это того стоило. Кроме того, Notifee хорошо интегрируется с react-native firebase удаленными уведомлениями, fwiw.