用户注销 React Native 应用程序时如何删除 Firebase 云消息传递令牌?

Posted

技术标签:

【中文标题】用户注销 React Native 应用程序时如何删除 Firebase 云消息传递令牌?【英文标题】:How to delete Firebase Cloud Messaging Token when user Log-Out of the React Native application? 【发布时间】:2020-06-03 10:04:14 【问题描述】:

我使用 React Native FCM 进行消息传递,当用户注销应用程序时,我想删除 FCM 令牌,这样用户就不会再次收到通知。

以下是我的注销代码。

_signOutAsync = async () => 
    this.logoutEvent()
    API.post('customer/auth/logout', null, 
      headers: 
        Authorization:
          'Bearer ' + (await AsyncStorage.getItem(Config.ACCESS_TOKEN))
      
    ).then((response) => 
      console.log(response)
    )
    this.clearData()
  

谢谢。

【问题讨论】:

【参考方案1】:

只需在您的注销功能中添加以下给定代码。

firebase.messaging().deleteToken()

【讨论】:

这不起作用,因为即使在删除令牌后它会再次生成相同的 FCM 令牌。 如果您遇到这个问题,请参考我的解决方案。 这对我不起作用,在 deleteToken 之后,登录并调用 getToken 不会让您重新登录。相反,使用 unregisterDeviceForRemoteMessages / registerDeviceForRemoteMessages 有效。见rnfirebase.io/reference/…【参考方案2】:
await firebase.messaging().deleteToken();

是解决方案。

但是,如果删除后仍然得到相同的令牌,请安装 npm 包react-native-restart,然后执行以下步骤以获取新令牌

messaging()
            .deleteToken(undefined,'*')
            .then(() => 
                RNRestart.Restart();

【讨论】:

以上是关于用户注销 React Native 应用程序时如何删除 Firebase 云消息传递令牌?的主要内容,如果未能解决你的问题,请参考以下文章

当用户在 react-native 应用程序中注销时,选项卡导航器不会重置

如何在 React Native 中的 setState 之前停止执行

React Native:登录或注销时如何以编程方式刷新应用程序?

从 Strapi (React Native) 注销用户?

如何使用身份验证或注册、登录和注销来制作 React Native 和 Graphql 应用程序

react-native如何在facebook登录和注销后刷新页面