Javascript 如何取消订阅(删除侦听器)本机Expo推送通知

Javascript 如何取消订阅(删除侦听器)本机Expo推送通知,javascript,react-native,push-notification,listener,expo,Javascript,React Native,Push Notification,Listener,Expo,我想给用户一个选项,可以取消订阅的通知。我已经阅读了Expo文档,但仍然不确定如何在代码中实现它 以下是我想要实现的: Notifications.addListener(监听器) 事件订阅 然后remove()(函数)--从将来的通知中取消订阅侦听器。通知 以下是componentDidMount方法: componentDidMount() { registerForPushNotificationsAsync(); // Handle notifications that are

我想给用户一个选项,可以取消订阅的通知。我已经阅读了Expo文档,但仍然不确定如何在代码中实现它

以下是我想要实现的:

Notifications.addListener(监听器)
事件订阅
然后remove()(函数)--从将来的通知中取消订阅侦听器。通知

以下是
componentDidMount
方法:

  componentDidMount() {
registerForPushNotificationsAsync();

// Handle notifications that are received or selected while the app
// is open. If the app was closed and then opened by tapping the
// notification (rather than just tapping the app icon to open it),
// this function will fire on the next tick after the app starts
// with the notification data.
this._notificationSubscription = Notifications.addListener(this._handleNotification);
}

帮点忙就好了

致意
Musayyab

只是一个简短的回答,因为我认为大多数答案或评论至少都没有抓住你的重点。 您可以通过执行此操作停止应用程序侦听通知。_notificationSubscription.remove(); 但我认为你要寻找的是一种方法,可以让用户从未来的所有通知中取消订阅(你通常会在设置菜单或选项菜单中提供这种方法,这样,如果用户请求你的应用程序不向他们发送通知,你就不会向用户发送垃圾邮件),当然,这可以通过手机的实际设置在大多数手机上实现,因此您的应用程序需要遵守此请求,否则,谷歌和苹果等应用程序商店将禁止您的应用程序向任何用户发送通知,而不管订阅状态如何

目前处理此问题的唯一方法是远程通知的服务器端,本地通知您可以使用asyncstorage存储设置并在推送任何定时通知之前引用此设置。
您需要设置一个对通知服务器的调用,以从数据库中删除通知令牌,从而阻止您的系统在将来向该设备发送任何通知。

调用
此。\u notificationSubscription.remove()
是的,我也在考虑这个问题,这样就足够了吗?如果我在另一个页面上配置通知,并且我在另一个页面上有取消订阅的按钮,那么我将如何调用该函数呢?将其作为调用
this.\u notificationSubscription.remove()的过程传递下去但仍然收到通知。您将继续收到通知。当你
删除
时,
这个。_handleNotification
不应该被呼叫。回答得好。通知订阅与是否接收通知无关,它是管理已接收通知的方法。如果不希望用户收到通知,只需不从服务器端发送即可。