Я хотел бы получать сообщения между пользователями в любое время, но я могу только это сделать, когда я конкретно ссылаюсь на дочерний узел, который я создаю при добавлении нового сообщения в бэкэнд (дочерний узел «+ USER1PHONENUMBER: + USER2PHONENUMBER», и оба пользователя будут записывать данные на один и тот же дочерний узел). Это нормально, когда пользователь переходит в список контактов и выбирает контакт, поскольку я могу затем получить оба телефонных номера пользователя и узнать, какой дочерний узел использовать. Я сделал это вот так:Получение данных Firebase между пользователями
if (senderNumber > receiverNumber) {
Firebase ref = new Firebase(Passwords.FB_LINK).child("Message").child(username + ":" + binderContact.getNumber());
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot msg : dataSnapshot.getChildren()) {
Message message = msg.getValue(Message.class);
Log.d("TAG", "Message Received: " + message.getText());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
else {
Firebase ref = new Firebase(Passwords.FB_LINK).child("Message").child(binderContact.getNumber() + ":" + username);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot msg : dataSnapshot.getChildren()) {
Message message = msg.getValue(Message.class);
Log.d("TAG", "Message Received: " + message.getText());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
Дело в том, я хотел бы, чтобы каким-то образом получать сообщения в любое время мой пользователь получает новое сообщение на дочерний узел, который indludes их PHONENUMBER так, то я могу хранить это и отображать их в виде списка с контактными данными, а также чтобы я мог создать уведомление на телефоне пользователей в любое время, когда они получат новое сообщение. Любые идеи, как это может быть достигнуто? На данный момент у меня нет никаких идей.
У меня есть следующие сообщения классовую структуру:
public class Message {
private String from;
private String to;
private String text;
private String time;
private String timeCreated;
private Boolean repeat;
private String weekdays;
public Message() {}
public Message(String from, String to, String text, String time, String timeCreated, Boolean repeat, String weekdays) {
this.from = from;
this.to = to;
this.text = text;
this.time = time;
this.timeCreated = timeCreated;
this.repeat = repeat;
this.weekdays = weekdays;
}
public String getFrom() {
return from;
}
public String getTo() {
return to;
}
public String getText() {
return text;
}
public String getTime() {
return time;
}
public String getTimeCreated() {
return timeCreated;
}
public Boolean getRepeat() {
return repeat;
}
public String getWeekdays() {
return weekdays;
}
}
Это, как я сохранить данные firebase и то, что он выглядит на firebase конце (имя пользователя = PHONENUMBER пользователя):
// Save message on backend
if (senderNumber > receiverNumber) {
Firebase ref = new Firebase(Passwords.FB_LINK).child("Message").child(username + ":" + binderContact.getNumber()).child(currentTimeStamp);
Message msg = new Message(username, binderContact.getNumber(), message, hour + ":" + minute, currentTimeStamp, repeat, "M, D, W");
ref.setValue(msg);
}
else {
Firebase ref = new Firebase(Passwords.FB_LINK).child("Message").child(binderContact.getNumber() + ":" + username).child(currentTimeStamp);
Message msg = new Message(username, binderContact.getNumber(), message, hour + ":" + minute, currentTimeStamp, repeat, "M, D, W");
ref.setValue(msg);
}
Пожалуйста, разместите свою структуру данных как текст вместо рисунка. Текст делает это намного быстрее и проще, когда мы можем копировать и вставлять в наш ответ. – Jay