我正在开发一个聊天应用程序。Firebase 具有这种离线功能。即使我离线,发送的短信也会显示为已发送。
是否有可能以任何方式显示两种状态?一种是当用户从应用程序发送消息时,另一种是当消息写入数据库时。任何帮助将不胜感激。
这是我写入数据库的方式:
mChatSendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = mChatMessageView.getText().toString();
if (!TextUtils.isEmpty(message)){
String user_ref = "Announcement/"+email_red+"/"+class_id;
DatabaseReference user_message_push = mRootRef.child("Announcement")
.child(email_red).child(class_id).push();
String push_id = user_message_push.getKey();
Map messageMap = new HashMap();
messageMap.put("Message", message);
messageMap.put("Type", 1);
Map messageUserMap = new HashMap();
messageUserMap.put(user_ref+"/"+push_id,messageMap)
mRootRef.updateChildren(messageUserMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
if (databaseError!=null){
}
}
});
}
}
});
您可以通过在更新上使用回调方法来判断写入数据库何时成功。您在这里使用了一个,但您没有在其中做任何事情:
mRootRef.updateChildren(messageUserMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
if (databaseError!=null){
}
}
});
当上面onComplete
被调用时,这就是你如何知道messageUserMap
在服务器上成功完成了写入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句