Android IM即时通信开发总结及代码
IM即时通信的最大成功实例应该就是微信了吧,,,这次的IM即时通信是建立在Bmob上的,借用了人家的服务端和IM、Android SDK
传送:
它的文档组织不是很好,我觉得基本上就是这三个链接比较好,所有的链接都来自这个页面
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改成你自己申请的,具体的看上面的快速开发文档,如果上面的东西你不懂的话,那就不要用了,肯定问题百出的。。