基于野狗的及时通讯

来源:互联网 发布:深圳行知职业技术官网 编辑:程序博客网 时间:2024/06/03 08:16

基于野狗的及时通讯

野狗

github

数据结构

新建用户

实现的很简单

查找在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) {            }        });    }

整个工程实现的很简单,界面就用了一个列表来显示,

用到的开源库

ButterKnife

0 0
原创粉丝点击