Android及時通訊之-------融云篇

Android及時通訊之--------融云篇
想一想,世界可能會更好摔敛。 ---來自未來的詩人杜鵬鵬

前些天項目中接入了融云及時通訊辞槐,閑了無事掷漱,做一個小小的總結(jié)。
使用 Android Studio 集成融云榄檬,基本可以分為一下幾個步驟:
1.進入融云官網(wǎng)Android 下載頁面(附網(wǎng)址:http://www.rongcloud.cn/downloads)卜范,分為兩種,IMKit SDK和IMLib SDK鹿榜。IMLib庫是屬于自己定制需求的海雪,IMKit基本就滿足一般項目的需求了,所以我這里用的是IMKit SDK,有興趣的同學(xué)可以研究一下另一個.

2.將 IMKitsdk 作為 Module 導(dǎo)入到 Project 中,在 application 中調(diào)用RongIM.init(this);
3.在 activity 中連接融云舱殿,RongIM.connect(token,callback)操作奥裸。當然這個操作的前提是你已經(jīng)從公司后臺服務(wù)器中獲取到了Token。因為考慮到登錄融云操作可能在其他地方:斷網(wǎng)后再來連接/被擠下線等沪袭。所以我把這個操作單另寫了一個類湾宙,具體聯(lián)網(wǎng)方法:
* **/*建立與融云服務(wù)器的連接*/** *public voidconnect() {* *if(context.getApplicationInfo().packageName.equals(BTCollegeApp.getCurProcessName(BTCollegeApp.getAppContext()))) {* */* IMKit SDK調(diào)用第二步,建立與服務(wù)器的連接*/* *RongIM.connect(token, newRongIMClient.ConnectCallback() {* */*Token錯誤,在線上環(huán)境下主要是因為Token已經(jīng)過期,您需要向App Server重新請求一個新的Token*/* *@Override* *public voidonTokenIncorrect() {* *Log.e("LoginActivity錯誤","--onTokenIncorrect");* *}* */*** **連接融云成功* **@paramuserid當前token* **/* *@Override* *public voidonSuccess(String userid) {* *Log.e("LoginActivity成功","--onSuccess"+ userid);* *userID= userid;* *rongCloudInit();* *}* */*** **連接融云失敗* **@paramerrorCode錯誤碼侠鳄,可到官網(wǎng) 查看錯誤碼對應(yīng)的注釋* **/* *@Override* *public voidonError(RongIMClient.ErrorCode errorCode) {* *Log.d("LoginActivity失敗","--onError"+ errorCode);* *}* *});* *}* *}* *
4.這里我們分開關(guān)注兩個點:會話列表和會話界面
1>.會話界面
新建ConversationActivity類埠啃,然后在其布局文件中寫自己的定制界面(一般是標題欄),對話界面融云已經(jīng)幫我們寫好了伟恶,只需要將這段代碼復(fù)制即可:
<fragment
android:id="@+id/chat_window_fragment"
android:layout_below="@+id/conversation_topbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="io.rong.imkit.fragment.ConversationFragment"/>

設(shè)置標題:
Uri uri= getIntent().getData();
userID= uri.getQueryParameter("targetId").toString();
title= uri.getQueryParameter("title").toString();

2>.會話列表
會話列表分為兩種情況:會話列表在activity中碴开,會話類別在fragment中。如果會話列表在activity中博秫,屬于常規(guī)情況叹螟,查閱官方文檔即可。下面具體說一下第二種情況:
首先在會話列表所在的fragment類的布局文件中添加以下代碼:
android:id="@+id/rong_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

然后在此fragment類中添加以下代碼
ConversationListFragmentfragment =newConversationListFragment();
Uri uri = Uri.parse("rong://"+ getActivity().getApplicationInfo().packageName).buildUpon()
.appendPath("conversationlist")
.appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(),"false")//設(shè)置私聊會話非聚合顯示
.appendQueryParameter(Conversation.ConversationType.GROUP.getName(),"true")//設(shè)置群組會話聚合顯示
.appendQueryParameter(Conversation.ConversationType.DISCUSSION.getName(),"false")//設(shè)置討論組會話非聚合顯示
.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(),"false")//設(shè)置系統(tǒng)會話非聚合顯示
.build();
fragment.setUri(uri);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.add(R.id.rong_content,fragment);
transaction.commit();

這樣會話列表和會話界面就基本實現(xiàn)了台盯,但是問題又來了罢绽。。静盅。良价。
用戶想用自己的頭像和昵稱而不是融云自帶的固定的。還有就是很多聊天軟件點擊對方頭像時可以跳到對方資料界面
1.點擊:
RongIM.setConversationBehaviorListener(newRongIM.ConversationBehaviorListener() {
@Override//頭像
public booleanonUserPortraitClick(Context context,Conversation.ConversationType conversationType,UserInfo userInfo) {
return true;
}
@Override
public booleanonUserPortraitLongClick(Context context,Conversation.ConversationType conversationType,UserInfo userInfo) {
return false;
}
@Override//消息
public booleanonMessageClick(Context context,View view,Message message) {
return false;
}
@Override
public booleanonMessageLinkClick(Context context,String s) {
return false;
}
@Override
public booleanonMessageLongClick(Context context,View view,Message message) {
return false;
}
});

2.設(shè)置用戶信息:
RongIM.setUserInfoProvider(newRongIM.UserInfoProvider() {
@Override
publicUserInfogetUserInfo(finalString userId) {
UserInfo userInfo=newUserInfo(userId,用戶名,Uri.parse(頭像的url地址));
return userInfo;
}
}, true);

當然這里可能又會出現(xiàn)問題蒿叠,融云只返回了用戶userid明垢,如果想要設(shè)置用戶信息,可能還要根據(jù)userid聯(lián)網(wǎng)查詢信息市咽,但是聯(lián)網(wǎng)需要耗時痊银,導(dǎo)致上面return userinfo的時候回為空,解決辦法就是:
先不管此代碼,在聯(lián)網(wǎng)獲取到用戶數(shù)據(jù)后寫如下代碼即可:
RongIM.getInstance().refreshUserInfoCache(newUserInfo(userid,UserName,Uri.parse(messageUserImage)));

到此結(jié)束施绎,謝謝閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溯革,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谷醉,更是在濱河造成了極大的恐慌致稀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俱尼,死亡現(xiàn)場離奇詭異抖单,居然都是意外死亡,警方通過查閱死者的電腦和手機遇八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門矛绘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刃永,你說我怎么就攤上這事货矮。” “怎么了揽碘?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵次屠,是天一觀的道長园匹。 經(jīng)常有香客問我,道長劫灶,這世上最難降的妖魔是什么裸违? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮本昏,結(jié)果婚禮上供汛,老公的妹妹穿的比我還像新娘。我一直安慰自己涌穆,他們只是感情好怔昨,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宿稀,像睡著了一般趁舀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祝沸,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天矮烹,我揣著相機與錄音,去河邊找鬼罩锐。 笑死奉狈,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涩惑。 我是一名探鬼主播仁期,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竭恬!你這毒婦竟也來了跛蛋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萍聊,失蹤者是張志新(化名)和其女友劉穎问芬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿桨,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年强戴,在試婚紗的時候發(fā)現(xiàn)自己被綠了亭螟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骑歹,死狀恐怖预烙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情道媚,我是刑警寧澤扁掸,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布翘县,位于F島的核電站,受9級特大地震影響谴分,放射性物質(zhì)發(fā)生泄漏锈麸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一牺蹄、第九天 我趴在偏房一處隱蔽的房頂上張望忘伞。 院中可真熱鬧,春花似錦沙兰、人聲如沸氓奈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舀奶。三九已至,卻和暖如春斋射,著一層夾襖步出監(jiān)牢的瞬間育勺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工绩鸣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怀大,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓呀闻,卻偏偏與公主長得像化借,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捡多,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,129評論 25 707
  • 當你把未來交給雞湯蓖康,把夢想交給勵志,你以為自己很努力了垒手,到頭來都是自己感動了自己蒜焊。
    Chaylse醬閱讀 113評論 0 0
  • 1 最近這個問題問的人好多泳梆,決定寫一寫。 寫過好些篇DISC相關(guān)的文章了榜掌,從《TA到底是哪種人优妙?》開始。 雖然我們...
    小荻老師閱讀 218評論 0 2
  • Checkstyle有默認的規(guī)范憎账,不過某個具體的項目來說并不太適用套硼。以下是一份根據(jù)華為的Java編程規(guī)范編寫的ch...
    丨ouo丨閱讀 2,607評論 1 2