当用户A登录并登出后,用户B登录。由于为用户A生成的令牌未被删除,所以用户B收到了原本应该发给用户A的通知。Dart包没有删除此令牌的选项。
来自官方文档的说明:
已弃用:deleteInstanceID() 已被 deleteToken() 取代。
因此,要使当前令牌无效,只需将此代码添加到您的注销函数中:
await FirebaseMessaging.instance.deleteToken();
此后,发往该令牌的服务器消息将失败。
编辑:看起来 deleteInstanceID
已经过时,推荐使用 deleteToken
。请查看其他答案获取更多信息。
您可以调用deleteInstanceID
来实现此操作。请注意 deleteInstanceID
会自动重新创建令牌,因此您需要事先将 setAutoInitEnabled
设置为false。可以通过查询autoInitEnabled
来检查当前的自动初始化值。
注意:需要firebase_messaging
版本2.1.0或更高版本。