React Native Expo 应用程序如何从通知中取消注册

Mat*_*t T 5 notifications react-native expo

在我的 React Native Expo 应用程序中,我成功注册了通知服务,并且Notifications.getExpoPushTokenAsync()它运行没有问题,我的问题是,如何停止接收通知?有没有办法只清除设备上的推送令牌?

我遇到的问题是,如果用户注销并且不同的用户在同一设备上登录,他们仍然会收到以前的用户通知,因为该设备仍然注册。Notifications.removePushTokenSubscription()看起来它可能有效,但它只会删除创建的推送令牌侦听器Notifications.addPushTokenListener()(我认为)与此问题无关

我当前的注销功能尝试如下所示:

  const logOutUser = async(notificationToken) => {
    if(notificationToken){
      var subscription = await Notifications.addPushTokenListener(notificationToken);
      await Notifications.removePushTokenSubscription(subscription);
    }
  }
Run Code Online (Sandbox Code Playgroud)

我对这个问题的思考是错误的吗?谢谢!

Gha*_*uat 5

您无法从通知中取消注册,没有任何功能可以做到这一点,因为博览会令牌与您的设备相关,而不是您的帐户,相反,您可以执行以下操作:

  1. 当用户登录时,您应该将expo 令牌发送到后端并将其存储在expoTokens 数组中,因为用户可以在多个手机上打开他的帐户。
  1. 将 expo 令牌存储在 AsyncStorage中。
  1. 当用户注销时,您应该从后端数据库的 expoTokens 数组中删除 expo 令牌。
  1. 并从 AsyncStorage 中精细地删除它。

希望对你有帮助!