【发布时间】:2022-11-17 07:54:42
【问题描述】:
这是我第一次使用 Firestore Cloud Messaging,我想为每个特定设备获取 FCM 令牌。为了快速开发,我添加了 firebase_auth_ui 包,它基本上外包了 firebase 身份验证登录和注册流程。为了捕获用户的 ID 并将其存储在他们的文档中,我使用了一个运行良好的简单函数:并完成了工作:
Future<void> addUserDataToFireStore() async {
CollectionReference users = FirebaseFirestore.instance.collection('users');
String uid = FirebaseAuth.instance.currentUser!.uid;
users.doc(uid).set({
'userId': uid,
// 'displayName': currentUser!.displayName!,
});
}
现在,出于某种原因,当我尝试访问注册令牌时,我的 userId 被删除了。当我尝试将令牌添加到同一个用户文档时,userId 被删除并且 fcm 令牌保留。我按如下方式生成令牌:
generateDeviceToken() async {
String? fcmToken = await FirebaseMessaging.instance.getToken();
final userId = FirebaseAuth.instance.currentUser!.uid;
await FirebaseFirestore.instance
.collection('users')
.doc(userId)
.set({'fcmToken': fcmToken});
}
问题是当我尝试同时调用它们时。我不能得到两个。该文档将填充 UserId 或 FCM,但现在两者都有。这就是当我尝试同时调用两者时发生的情况,
也许我应该制作一个更新 fcm 令牌而不是每次都设置它的方法?
【问题讨论】:
标签: flutter firebase-cloud-messaging