码迷,mamicode.com
首页 > 移动开发 > 详细

Android IM即时通信开发总结

时间:2016-07-23 02:00:37      阅读:629      评论:0      收藏:0      [点我收藏+]

标签:

IM即时通信的最大成功实例应该就是微信了吧,,,这次的IM即时通信是建立在Bmob上的,借用了人家的服务端和IM、Android SDK

传送:

Andorid快速入门

详细开发文档

IM快速入门

它的文档组织不是很好,我觉得基本上就是这三个链接比较好,所有的链接都来自这个页面

http://docs.bmob.cn/android/developdoc/index.html?menukey=develop_doc&key=develop_android

然后就是要自己看类库文档,不得不说,写得太简单了。。还好有demo和问答,问答其实回答的还是很快的。

源码下载

快速入门相关源码下载

案例教程和源码是快速入门的最简单方法,Bmob也为大家准备了相关的案例教程和源码,欢迎大家下载和查看。

为方便大家更好的理解Bmob SDK能够做的事情,我们还特意为大家提供了一些源码,大家可以下载之后,嵌入Bmob的AppKey,再打包运行。

阅读源码是一种良好的习惯!!

即时聊天案例源码:https://github.com/bmob/BmobIMSDK4Android

图文社区案例源码:https://git.oschina.net/v7/Wonderful 这个案例是猿圈媛圈开发团队提供的。

校园小菜案例源码:https://github.com/bmob/Shop 这个案例是湖工大的朋友提供的。

社交分享案例源码:https://github.com/bmob/bmob-android-social-share 这个是金刚锁开发者提供的

第三方登录案例源码:https://github.com/bmob/bmob-android-demo-thirdpartylogin 包含第三方登录和登录后获取用户信息的源码

 

因为以前没有开发经验,所以这次开发还是很吃力的,看源码差点要了我的命。。

我看的当然是即时通讯的案例源码,这次开发主要注意这么几个事情

1.IM的sdk,事实上,很多在网上用的demo都比较老了,但是bmob的更新比较快,所以我建议还是多读读看,我看的是2016年7月份的最新IM sdk写的, 新的demo功能比较简单,主要是正常的一些消息的传送,这里主要注意两个点,一个就是消息接收机制,消息接收机制有两个,一个是全局消息接收机制,形如:

public class DemoMessageHandler extends BmobIMMessageHandler

这个在IM快速开发文档也是说明了的。还有一个就是局部消息接收机制:

implements MessageListHandler
@Override
public void onMessageReceive(List<MessageEvent> list) {
Logger.i("聊天页面接收到消息:" + list.size());
//当注册页面消息监听时候,有消息(包含离线消息)到来时会回调该方法
for (int i=0;i<list.size();i++){
addMessage2Chat(list.get(i));
}
}
 

  这个是什么呢,就是一个Activity如果implements了这个类,那么重写这个消息接收函数,当处于这个Activity且有消息通知时,就会执行这个onMessageReceive函数。

  还有一个要注意的点就是消息自定义,因为bmob封装的消息类型比较少,如果要扩展的,就要了解消息的自定义机制,这些在IM的快速开发文档里有介绍,比如这个添加好友的自定义消息类:

package cn.bmob.imdemo.bean;

import android.text.TextUtils;

import org.json.JSONObject;

import cn.bmob.imdemo.Config;
import cn.bmob.imdemo.db.NewFriend;
import cn.bmob.newim.bean.BmobIMExtraMessage;
import cn.bmob.newim.bean.BmobIMMessage;
import com.orhanobut.logger.Logger;

/**添加好友请求
 * @author :smile
 * @project:AddFriendMessage
 * @date :2016-01-30-17:28
 */
public class AddFriendMessage extends BmobIMExtraMessage{

    public AddFriendMessage(){}

    /**将BmobIMMessage转成NewFriend
     * @param msg 消息
     * @return
     */
    public static NewFriend convert(BmobIMMessage msg){
        NewFriend add =new NewFriend();
        String content = msg.getContent();
        add.setMsg(content);
        add.setTime(msg.getCreateTime());
        add.setStatus(Config.STATUS_VERIFY_NONE);
        try {
            String extra = msg.getExtra();
            if(!TextUtils.isEmpty(extra)){
                JSONObject json =new JSONObject(extra);
                String name = json.getString("name");
                add.setName(name);
                String avatar = json.getString("avatar");
                add.setAvatar(avatar);
                add.setUid(json.getString("uid"));
            }else{
                Logger.i("AddFriendMessage的extra为空");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return add;
    }


    @Override
    public String getMsgType() {
        return "add";
    }

    @Override
    public boolean isTransient() {
        //设置为true,表明为暂态消息,那么这条消息并不会保存到本地db中,SDK只负责发送出去
        //设置为false,则会保存到指定会话的数据库中
        return true;
    }

}

  

2. Android开发文档

因为涉及到使用了bmob的服务端,所以我的所有表、所有内容是直接存储在了云上的,如何把消息送到云端、如何从云端读取数据,这个直接看前面的开发文档就好了。都有很详细的说明了,但是,希望库文档能继续完善。。

 

3. 代码结构

由于对Android开发不太熟悉,对各种组件、各种View(Listview、RecyclerView。。)、适配器的理解花费了很多时间,基本上来讲,一个Activity类有一个xml文件,至少一个,然后有一个适配器处理时事件;xml的话,要注意嵌套关系很复杂,就是一个xml吧,有很多个xml组成,完了还有很多布局关系。。T.T

 

4. 事件处理

这里说的事件处理主要是Activity和Activity之间的,startActivity、startActivityForResult、还有这个可以看下EventBus使用详解(一)——初步使用EventBus

把这个四个搞明白了,还有啥看不懂的demo。。

Android IM即时通信开发总结

标签:

原文地址:http://www.cnblogs.com/puluotiya/p/5697708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!