Bmob即時通訊服務快速集成指南

依賴配置

在Project的build.gradle中添加如下內容:

buildscript {
....
allprojects {
    repositories {
        jcenter()
        //Bmob的maven倉庫地址斯辰,必須填寫
        maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
    }
....
}

在app的build.gradle文件中添加compile依賴文件

dependencies {
    ....
    //bmob-im:自2.0.5開始提供aar格式:包含BmobNewIM_xxxx.jar辜限、androidasync_2.1.6.jar佳晶、  bmob_im_notification_strings.xml
    compile 'cn.bmob.android:bmob-im:2.0.5@aar'
    //bmob-sdk:3.4.7 IM服務使用BmobSDK的 BmobFile 用于圖片、語音等文件消息的發(fā)送,因此必須導入特定版本的BmobSDK。
    compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
}

配置AndroidManifest.xml

1、 添加Bmob_APP_KEY:

   <meta-data
        android:name="Bmob_APP_KEY"
        android:value="Bmob平臺的Application ID" />

注:Bmob_APP_KEY 必須填寫,否則無法正常使用IM服務肠阱。

2、 添加權限

    <!--網絡權限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 監(jiān)聽網絡的變化 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <!-- 設備休眠 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- sd卡存儲-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--攝像頭-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!--錄音-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!--通知震動-->
    <uses-permission android:name="android.permission.VIBRATE" />

3朴读、 添加Service屹徘、receiver標簽:

  <receiver android:name="cn.bmob.newim.core.ConnectChangeReceiver" >
        <intent-filter>
            <action android:name="cn.bmob.action.RECONNECT" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.USER_PRESENT" />
        </intent-filter>
  </receiver>
  <service
    android:name="cn.bmob.newim.core.service.BmobIMService"
    android:process=":bmobcore" />
  <service
    android:name="cn.bmob.newim.core.service.NotifyService"
    android:process=":bmobcore" />
  <service android:name="cn.bmob.newim.core.service.ReConnectService" />
  <service android:name="cn.bmob.newim.core.service.HeartBeatService" />

注:自v2.0.5版本開始,將原來的BmobImService名稱更換為'BmobIMService'衅金,請務必修改噪伊,否則將無法正常使用IM服務。

注冊消息接收器

如果你使用的是NewIM_V2.0.2以后(包含v2.0.2)的SDK版本,那么你需要自定義消息接收器繼承自BmobIMMessageHandler來處理服務器發(fā)來的消息和離線消息氮唯。

public class DemoMessageHandler extends BmobIMMessageHandler{

    @Override
    public void onMessageReceive(final MessageEvent event) {
        //當接收到服務器發(fā)來的消息時鉴吹,此方法被調用
    }

    @Override
    public void onOfflineReceive(final OfflineMessageEvent event) {
        //每次調用connect方法時會查詢一次離線消息,如果有惩琉,此方法會被調用
    }
}

別忘記在Application的onCreate方法中注冊這個DemoMessageHandler:

public class BmobIMApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        //NewIM初始化
        BmobIM.init(this);
        //注冊消息接收器
        BmobIM.registerDefaultMessageHandler(new DemoMessageHandler(this));
    }
}

初始化

在Application的onCreate方法中調用BmobIM.init(context)

public class BmobIMApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        //只有主進程運行的時候才需要初始化
        if (getApplicationInfo().packageName.equals(getMyProcessName())){
            //im初始化
            BmobIM.init(this);
            //注冊消息接收器
            BmobIM.registerDefaultMessageHandler(new DemoMessageHandler(this));
        }
    }

    /**
     * 獲取當前運行的進程名
     * @return
     */
    public static String getMyProcessName() {
        try {
            File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");
            BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));
            String processName = mBufferedReader.readLine().trim();
            mBufferedReader.close();
            return processName;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

注:
初始化方法包含了BmobSDK的初始化步驟豆励,故無需再初始化BmobSDK
在初始化的時候,最好做下判斷:只有主進程運行的時候才開始初始化,避免資源浪費良蒸。

服務器連接

連接服務器:

User user = BmobUser.getCurrentUser(context,User.class);
BmobIM.connect(user.getObjectId(), new ConnectListener() {
    @Override
    public void done(String uid, BmobException e) {
        if (e == null) {
            Logger.i("connect success");
        } else {
            Logger.e(e.getErrorCode() + "/" + e.getMessage());
        }
    }
});

注:
調用connect方法技扼,需要傳入一個唯一的用戶標示clientId,Demo使用的是Bmob的用戶登錄系統(tǒng)嫩痰。

斷開連接:

BmobIM.getInstance().disConnect();
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末剿吻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子串纺,更是在濱河造成了極大的恐慌丽旅,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纺棺,死亡現(xiàn)場離奇詭異榄笙,居然都是意外死亡,警方通過查閱死者的電腦和手機祷蝌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門茅撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杆逗,你說我怎么就攤上這事乡翅×燮#” “怎么了罪郊?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尚洽。 經常有香客問我悔橄,道長,這世上最難降的妖魔是什么腺毫? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任癣疟,我火速辦了婚禮,結果婚禮上潮酒,老公的妹妹穿的比我還像新娘睛挚。我一直安慰自己,他們只是感情好急黎,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布扎狱。 她就那樣靜靜地躺著,像睡著了一般勃教。 火紅的嫁衣襯著肌膚如雪侧蘸。 梳的紋絲不亂的頭發(fā)上惜互,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼它改。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播矢腻,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耳贬!你這毒婦竟也來了踏堡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤咒劲,失蹤者是張志新(化名)和其女友劉穎顷蟆,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體腐魂,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡帐偎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛔屹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片削樊。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兔毒,靈堂內的尸體忽然破棺而出漫贞,到底是詐尸還是另有隱情,我是刑警寧澤育叁,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布迅脐,位于F島的核電站,受9級特大地震影響豪嗽,放射性物質發(fā)生泄漏谴蔑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一龟梦、第九天 我趴在偏房一處隱蔽的房頂上張望隐锭。 院中可真熱鬧,春花似錦计贰、人聲如沸钦睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荞怒。三九已至,卻和暖如春樱溉,著一層夾襖步出監(jiān)牢的瞬間挣输,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工福贞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撩嚼,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像完丽,于是被迫代替她去往敵國和親恋技。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容