Android IM即时通信开发总结及代码

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 包含第三方登录和登录后获取用户信息的源码

 

[附:

其实有很多强大的后端云,比如这个github上,基于环信的例子:

https://github.com/huangfangyi/FanXin2.0_IM

https://code.csdn.net/diyangxia/imsample/tree/master

http://blog.csdn.net/diyangxia/article/details/45393599

]

 

 

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

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

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。。

 

代码

代码下载:

part1:http://download.csdn.net/detail/u014576894/9584903

part2:http://download.csdn.net/detail/u014576894/9584898

代码说明:

这是小组作业,如果大家要用的话,请园内联系我好嘛,或者发邮件给我pengjing.parents@qq.com

      这个代码是建立在Android Studio2015上的,基本的功能就是IM通信和朋友圈,朋友圈的小视频功能有点bug,主要是下载视频失败,没有修改好;服务端借助了Bmob的后端云,如果要用的话,可以在AndroidManifest.xml里面把application ID改成你自己申请的,具体的看上面的快速开发文档,如果上面的东西你不懂的话,那就不要用了,肯定问题百出的。。

posted @ 2016-07-23 01:07  普洛提亚  阅读(27783)  评论(0编辑  收藏  举报