如何实现消息发送状态,如whatsapp刻度线?



我正在开发一个聊天应用程序。 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在服务器上成功完成写入的方式。

最新更新