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改成你自己申請的,具體的看上面的快速開發文檔,如果上面的東西你不懂的話,那就不要用了,肯定問題百出的。。