在单阵列Firebase中添加多个令牌ID

时间:2019-07-15 14:36:54

标签: android firebase google-cloud-firestore

我想在一个数组中存储多个令牌ID。但是,当我尝试在数组中添加添加时,它会更新数组的值,只有单个fcm会保存在其中。

users.document(uid).get()
    .addOnSuccessListener {
        documentSnapshot ->
        if (documentSnapshot.exists()){
            var tokenArray = arrayListOf<String>()
            tokenArray.add(FirebaseInstanceId.getInstance().getToken()!!)
            userHashmap["fcm_token"] = tokenArray
            users.document(user.uid).update("fcm_token", tokenArray)
                    .addOnSuccessListener {
                        task->
                        val intent = Intent(this@PhoneLoginActivity, ProfileActivity::class.java)
                        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
                        startActivity(intent)
                        finish()
                    }
        }
    }
    .addOnFailureListener {
        exception ->
        Log.e("Exception", "${exception}")
    }

1 个答案:

答案 0 :(得分:2)

删除令牌数组,然后用FieldValue.arrayUnion推送数组。您的令牌将合并到其中。 Reference

users.document(user.uid).update("fcm_token", FieldValue.arrayUnion(FirebaseInstanceId.getInstance().getToken()))
                    .addOnSuccessListener {
                        task->
                        //Todo
                    }