React Native - 在接收本地推送通知时清除以前的推送通知

Posted

技术标签:

【中文标题】React Native - 在接收本地推送通知时清除以前的推送通知【英文标题】:React Native - Clear previous push notifications on receiving local push notification 【发布时间】:2021-01-28 00:43:23 【问题描述】:

我正在使用react-native-push-notification 在 React Native 中安排和生成本地推送通知,我正在尝试清除以前收到的有关接收任何预定通知的通知或在一段时间后自动删除当前收到的通知,但我找不到任何在ios上实现它的方法。一种方法是使用库提供的timeoutAfter 属性,该属性仅适用于android。对于 iOS,如果我可以在接收本地通知时调用任何方法但 onNotification() 不会在接收本地通知时触发,则其他方法是使用 PushNotificationIOS.removeAllDeliveredNotifications()。它仅在接收或点击远程通知或点击本地通知时触发。有没有其他方法或任何其他库来实现这一目标?这是我安排本地通知的代码:

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,
);

【问题讨论】:

对于iOS来说,目前ReactNative第三方库提供的功能,本质上都是通过native接口实现的。通常当你无法解决一些问题时,可以尝试自定义公共接口,但这样的接口只适用于iOS。 【参考方案1】:

尽管它通常是一个可靠且维护良好的库,但我开始遇到react-native-push-notification 的一些相同问题。最后,我转用Notifee:https://notifee.app/ 来生成/处理本地通知事件。它在弥合 iOS 和 Android 的潜在差异方面做得相当好,提供了跨平台的非常统一的 API。它似乎暴露了取消 API,尽管在我的情况下我不需要实现这些。生产许可证需要收费,但这并不疯狂,对我来说绝对值得。此外,Notifee 与 react-native firebase 很好地集成了远程通知,fwiw。

【讨论】:

以上是关于React Native - 在接收本地推送通知时清除以前的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中单击通知时接收数据,当应用程序被杀死时,(react-native-fcm 模块在 IOS 中获取推送通知)

如何在 IOS react native 上接收推送通知?

用户在屏幕聊天时如何取消本地推送通知?

使用 react-native 创建本地推送通知

使用 react-native 创建本地推送通知 - IOS

应用关闭时,Firebase消息传递无法接收通知(React Native)