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



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

有谁知道如何做到这一点?

🔥 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();
});

文档不是很好,但我在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);

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

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

Firebase 令牌是按应用实例计算的。只要在设备上安装了应用,令牌就会保持不变。要删除令牌,您必须卸载该应用程序。

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

最新更新