我正在尝试使用 Firebase FCM 服务向用户发送通知。 当用户登录时,我将其token_id存储到 Firestore 数据库中。
这就是我存储token_id的方式。
String token_id = FirebaseInstanceId.getInstance().getToken();
Log.i("token_id",token_id);
Map<String,Object> tokenMap = new HashMap<>();
tokenMap.put("token_id",token_id);
mFireStore.collection("Users").document(current_id).update(tokenMap).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(LoginActivity.this, "Signed in Successfully", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this,AdminActivity.class));
finish();
}
});
但是当我在不同的设备上使用同一用户登录时,以前的token_id会使用新用户进行更新。
有什么方法可以创建一个token_ids列表,以便我可以在 node.js 函数中使用它
您可以做的一件事是将 Firestore 架构更改为如下所示:
/users (collection)
/userId (document)
/name (field)
/otherStuff (fields)
/pushTokens (collection)
/deviceId (document)
/token (field)
这样,您就可以为每个用户放置多个令牌。除了集合,您还可以只使用array
.
如果可以找到一个好的设备 ID 来配对令牌,这将非常有效。曾经有一个ANDROID_ID
值,但如果我没记错的话,不再建议使用它。讨论如何处理设备组有点宽泛,所以我建议在这里查看我的答案。