首页 > 解决方案 > 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);
    }
  }

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

标签: react-nativenotificationsexpo

解决方案


您不能从通知中注销,没有任何功能可以这样做,因为 expo 令牌与您的设备相关,而不是您的帐户,而是您可以这样做:

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

希望这对你有用!


推荐阅读