react-native - 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);
}
}
我对这个问题的思考错了吗?谢谢!
解决方案
您不能从通知中注销,没有任何功能可以这样做,因为 expo 令牌与您的设备相关,而不是您的帐户,而是您可以这样做:
- 当用户登录时,您应该将expo 令牌发送到您的后端并将其存储在expoTokens 数组中,因为用户可以在多部手机中打开他的帐户。
- 将 expo 令牌存储在您的 AsyncStorage中。
- 当用户注销时,您应该从后端数据库中的 expoTokens 数组中删除 expo 令牌。
- 并从 AsyncStorage 中精细地删除它。
希望这对你有用!
推荐阅读
- google-apps-script - 如果两个对应的单元格匹配,则删除行
- json - 如何将一些 json 文件解析为列表
- php - 使用 PHP 连接到 MySQL 的问题
- javascript - 为什么我的javascript类实例中的方法看不到属性
- python - sqlite3.OperationalError) Heroku 上没有这样的表
- android - 此处 zoomTo 忽略 ViewRect X 和 Y 位置
- c# - PDFsharp 无法从 Crystal Reports CR23 编码的文档中读取文本
- java - 如何使用 do-while 循环程序修复这个随机数猜谜游戏?
- c++ - Arcball 相机:如何获得正确、方向和向上
- thymeleaf - 将列表绑定到单个输入字段 - spring boot thymeleaf