一旦用户注销,我想停止接收应用程序的通知。我想我必须删除 react-native-firebase 生成的设备令牌,但我找不到任何功能来执行此操作。
有谁知道如何做到这一点?
一旦用户注销,我想停止接收应用程序的通知。我想我必须删除 react-native-firebase 生成的设备令牌,但我找不到任何功能来执行此操作。
有谁知道如何做到这一点?
你可以这样实现:
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 令牌存储在应用程序中,而应将其存储在数据库中。Firebase 令牌是通知的设备标识符,如果有人窃取它,他们可能会用通知轰炸某人。
在后端创建一个处理注销(例如 POST /user/logout)的 API 路由,并在该请求中从数据库中删除 firebase 令牌。