基于野狗的及时通讯
数据结构
新建用户
实现的很简单
查找在user下有没有该用户,如果有就登录,没有就利用push() 创建
添加好友
根据输入的id查找,如果有就在双方的friend列表下添加对方,否则不做处理
及时通讯
进入通讯页面后添加如下监听, 当消息列表更新后更新页面
mRef.child(mId).child(mFriendId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() == null) {
return;
}
Map<String, String> map = (Map<String, String>) dataSnapshot.getValue();
mChatMap.putAll(map);
mChatList.clear();
mChatList.addAll(mChatMap.values());
mView.notifyDataChanged();
}
@Override
public void onCancelled(WilddogError wilddogError) {
}
});
发送消息,在自己的消息列表下添加后缀为 :send
的消息,在对方消息列表下添加:receive
后缀
public void sendMessage(final String message) {
final String time = System.currentTimeMillis() + "";
mChatMap.put(time, message+":send");
mRef.child(mId).child(mFriendId).setValue(mChatMap);
mRef.child(mFriendId).child(mId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, String> s = (Map<String, String>) dataSnapshot.getValue();
if (s == null) {
s = new HashMap<String, String>();
}
s.put(time, message+":receive");
mRef.child(mFriendId).child(mId).setValue(s);
}
@Override
public void onCancelled(WilddogError wilddogError) {
}
});
}
整个工程实现的很简单,界面就用了一个列表来显示,
用到的开源库