对于下面的方法有逻辑上的问题,也许有人可以帮我解决。当一个用户向另一个用户发送消息时,该消息显示在chatsfragment
中,就像发送该消息的用户应该看到的那样,但另一个用户没有得到它/看到它。只有当您是发送第一条消息的人时,这些消息才会出现。
我希望这样做,使其他用户收到消息,即使他们没有回应它。ChatsFragment
中的else if
语句不应该说明我要做什么吗?如果当前登录的用户是ID
(receiver),那么他们也应该让消息出现在chatsfragment
中,即使他们还没有响应它?还是我漏掉了什么?
JSON结构如下所示:
private void sendMessage(String sender, final String receiver, String message) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Chats");
Date date = Calendar.getInstance().getTime();
String formattedDate = DateFormat.getDateInstance(DateFormat.FULL).format(date);
String time = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
time = LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"));
}
String messageId = reference.push().getKey();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sender", sender);
hashMap.put("receiver", receiver);
hashMap.put("message", message);
hashMap.put("isseen", false);
hashMap.put("date", formattedDate);
hashMap.put("time", time);
hashMap.put("timestamp", ServerValue.TIMESTAMP);
hashMap.put("messageId", messageId);
if (messageId != null)
reference.child(messageId).setValue(hashMap);
final DatabaseReference chatref = FirebaseDatabase.getInstance().getReference("Chatlist").child(mFirebaseUser.getUid()).child(mId);
chatref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (!dataSnapshot.exists()) {
chatref.child("id").setValue(mId);
chatref.child("sender").setValue(mFirebaseUser.getUid());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
为了将消息添加到chatfragment
,我使用以下方法来添加聊天,如果您是发起对话的人,但是正如我之前所说的,其他用户没有接收到它:
ChatsFragment
private void chatList() {
mUsers = new ArrayList<>();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
mUsers.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
for (Chatlist chatlist : mUsersList) {
if (mFirebaseUser != null && user != null) {
if (!user.getId().equals(mFirebaseUser.getUid()) && user.getId().equals(chatlist.id)) {
mUsers.add(user);
} else if (mFirebaseUser.getUid().equals(chatlist.id)) {
mUsers.add(user);
}
}
}
}
mUserAdapterChat = new UserAdapterChat(getContext(), mUsers, true);
mUserAdapterChat.notifyDataSetChanged();
mRecyclerView.setAdapter(mUserAdapterChat);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
约翰,这是我的火警数据库。和我建议你的答案差不多。你可以检查。可能对你更有用。
问题内容: 我正在尝试通过Java Mail应用程序将邮件发送给我的朋友。我能够成功完成此操作,但是邮箱中的收件人列显示了完整的电子邮件地址,而不是发送者的姓名。我尝试更改各种参数,但是邮箱仍然会显示完整的电子邮件地址,而不是发件人的姓名。 使用此方法发送消息: 我将此方法称为: 问题答案: 您可以在使用中设置名称
我从我的域帐户发送消息,但他们不显示在用户(从nodemailer的选项)发送box.But当从gmail服务发送消息时,消息显示在已发送的user.Am我在下面的代码中缺少一些东西?
发送附件时,我看不到正文消息(message.setText(this.getEmailBody());)在电子邮件中。如果没有附件,电子邮件将显示正文消息。电子邮件被发送到gmail账户。你知道为什么会这样吗?
我已经在Gmail中的Check mail from other accounts(使用POP3)和Send mail as(使用TLS在587端口通过mail.mydomain.com安全连接发送邮件)下设置了我的cpanel电子邮件地址 看着Roundcube,我可以看到里面有收到的邮件,但没有发送的邮件——尽管Gmail是通过我的域服务器发送的。 有没有办法查看通过Gmail收发的邮件?
遇到WP插件问题,请联系表格7。当我填写表格并提交时,我收到一条成功消息,说明它已发送,但我没有在电子邮件中收到它。 邮件不在我的垃圾邮件中,我只在输入邮件时才收到邮件,邮件被发送到!? 它要发送的电子邮件是一个交换帐户。我可以通过WP后端上的联系人表单提交来查看电子邮件。但是我想解决这个问题。 类型 邮件 致:myname@company.com 发件人:网站 主题:挑战 我还检查了网站主机,他
所以,我正在制作一个笔记应用程序,并为CRUD操作实现了fiRecovery,我如何保存用户的数据,使其不会显示给应用程序的其他用户?