我正在尝试从
firebase realtime database
更新 FirebaseMessagingService
,但从 FirebaseMessagingService
更新时它永远不会更新。
所以逻辑是,当用户A向用户B(后台应用程序)发送消息时,它在将消息保存到本地数据库后调用
FirebaseMessagingService
,我需要更新消息状态以进行传递,以便用户A会收到他的消息已到达用户B的通知用户 B 收到通知,我可以在日志中看到用户 B 日志在设置该值之前已执行,并且其侦听器永远不会被调用以判断成功或失败。我还交叉检查了数据库参考是否正确。
我尝试使用 setValue 和 updateChildren 方法,但未能更新数据。我删除了监听器以获得干净的代码。
1:
DatabaseReference messageRef = databaseReference.child(messageNodeKey);
Map<String, Object> update = new HashMap<>();
update.put("Status", msgstatus);
messageRef.updateChildren(update);
2:
DatabaseReference messageRef = databaseReference.child(messageNodeKey).child("Status");
messageRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Log.d(TAG, "onDataChange: "+snapshot+" "+snapshot.exists());
if (snapshot.exists()){
messageRef.setValue(msgstatus)
}
}
当设备位于前台时,我可以更新该值,但当它从
FirebaseMessagingService
调用时则不能更新该值。谁能帮我解决这个问题。