java - 从火力基地检索信息
问题描述
我需要从 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) {
}
});
解决方案
根据您的最后评论:
正确,我需要同时获得这两个值。
请使用以下代码行:
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()
.
推荐阅读
- reactjs - 找不到模块:错误:无法解析打字稿中的“openlayers”
- angular - 特定条件下的Angular2 +灰色垫行
- java - 使用 Java11 自动生成的类文件
- arrays - 数组减少不能正确推断类型
- javascript - 在 react.js 中隐藏/禁用水平滚动条的箭头按钮
- django - 在 AuthenticationMiddleware 中添加 user_id 属性 | 姜戈
- python - 拿破仑和自动文档如何交互文档成员
- css - 使用 css 类调整映射函数输出的输出大小
- python - 循环遍历熊猫数据框并按数据分组
- protocol-buffers - grpc-gateway:找不到包“github.com/grpc-ecosystem/grpc-gateway/v2/runtime”