react-native-firebase:如何在注销时删除令牌?

时间:2018-05-19 18:27:03

标签: react-native react-native-firebase

我想在用户退出后停止接收应用通知。 我想我必须删除react-native-firebase生成的设备令牌,但我找不到任何功能来执行此操作。

有谁知道怎么做?

4 个答案:

答案 0 :(得分:3)

? messaging().deleteToken()

你可以这样实现:

import auth from '@react-native-firebase/auth';
import messaging from '@react-native-firebase/messaging';

auth().onAuthStateChanged(user => {
    if (!user) // Signed out
        messaging().deleteToken();
});

答案 1 :(得分:1)

首先,您不应该在应用内存储Firebase令牌,您应该将其存储在数据库中。 Firebase令牌是通知的设备标识符,如果有人窃取它,他们可能会通过通知轰炸某人。

创建一个API路由,在后端处理注销(例如POST / user / logout),并在该请求中从数据库中删除firebase令牌。

答案 2 :(得分:0)

firebase令牌是每个应用实例的。只要应用程序已安装在设备上,令牌就将保持不变。要删除令牌,您将必须卸载该应用程序。

要解决您的问题,您应该在登录用户注销后使其与令牌分离。您可以通过在用户注销时向服务器发送请求,以更新令牌与用户关联的数据库记录来执行此操作。然后,当新用户登录时,您应该向服务器发送另一个请求,以将令牌与该用户相关联。

答案 3 :(得分:0)

文档不是很好,但是我在v4.3.x

中找到了可行的解决方案
// login
const authorizedEntity = firebase.iid().app.options.messagingSenderId;
firebase.iid().getToken(authorizedEntity).then(token => token);

// logout
const authorizedEntity = firebase.iid().app.options.messagingSenderId;
firebase.iid().deleteToken(authorizedEntity, '*').then(nullToken => nullToken);