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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM