【问题标题】:Retrieve info from firebase从火力基地检索信息
【发布时间】:2021-12-18 15:47:36
【问题描述】:

我需要从 Firebase 实时数据库中检索特定信息以发送推送消息,但不知道该怎么做,我需要从所有用户那里获取设备令牌字符串,因此尝试调用用户,应该调用用户ID(这部分是我迷路的地方,不知道如何获取此路径),然后是设备令牌。

这就是我所拥有的:

UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
   

    usersIDs = UsersRef.getKey().toString();

    UsersRef.child(usersIDs).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                if (dataSnapshot.hasChild("device_token")) {
                    receiverUserDeviceToken = dataSnapshot.child("device_token").getValue().toString();
                }
            }
        }

        @Override
        public void onCancelled(@NotNull DatabaseError error) {

        }
    });

【问题讨论】:

  • 为了更好地理解,您需要获取f4...XMY:APA...wr3eff...8NT:APA...Bd7 值,对吧?
  • 正确,我需要同时获取两个值

标签: java android firebase firebase-realtime-database google-cloud-platform


【解决方案1】:

根据你上一条评论:

正确,我需要获取这两个值。

请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference users = rootRef.child("Users");
usersRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot userSnapshot : task.getResult().getChildren()) {
                String deviceToken = userSnapshot.child("device_token").getValue(String.class);
                Log.d("TAG", deviceToken);
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

logcat 中的结果将是:

f4...XMY:APA...wr3
eff...8NT:APA...Bd7

请记住,为了能够从 DataSnapshot 对象中获取所有结果,您必须使用 .getChildren() 遍历子对象。

【讨论】:

  • 请看我的帖子,我编辑了它
  • 对不起,它应该是“用户”,作为我编辑的答案。但除此之外,请将实时数据库依赖项升级到最新版本。在这种情况下,get() 将可用,对吗?试一试,告诉我它是否有效。
  • 太棒了!感谢您的帮助!
  • 不客气,迭戈。
猜你喜欢
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多