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

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

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

2.將 IMKitsdk 作為 Module 導入到 Project 中,在 application 中調用RongIM.init(this);
3.在 activity 中連接融云,RongIM.connect(token,callback)操作。當然這個操作的前提是你已經從公司后臺服務器中獲取到了Token。因為考慮到登錄融云操作可能在其他地方:斷網后再來連接/被擠下線等。所以我把這個操作單另寫了一個類,具體聯(lián)網方法:
* **/*建立與融云服務器的連接*/** *public voidconnect() {* *if(context.getApplicationInfo().packageName.equals(BTCollegeApp.getCurProcessName(BTCollegeApp.getAppContext()))) {* */* IMKit SDK調用第二步,建立與服務器的連接*/* *RongIM.connect(token, newRongIMClient.ConnectCallback() {* */*Token錯誤,在線上環(huán)境下主要是因為Token已經過期,您需要向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錯誤碼,可到官網 查看錯誤碼對應的注釋* **/* *@Override* *public voidonError(RongIMClient.ErrorCode errorCode) {* *Log.d("LoginActivity失敗","--onError"+ errorCode);* *}* *});* *}* *}* *
4.這里我們分開關注兩個點:會話列表和會話界面
1>.會話界面
新建ConversationActivity類,然后在其布局文件中寫自己的定制界面(一般是標題欄),對話界面融云已經幫我們寫好了,只需要將這段代碼復制即可:
<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"/>

設置標題:
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")//設置私聊會話非聚合顯示
.appendQueryParameter(Conversation.ConversationType.GROUP.getName(),"true")//設置群組會話聚合顯示
.appendQueryParameter(Conversation.ConversationType.DISCUSSION.getName(),"false")//設置討論組會話非聚合顯示
.appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(),"false")//設置系統(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.設置用戶信息:
RongIM.setUserInfoProvider(newRongIM.UserInfoProvider() {
@Override
publicUserInfogetUserInfo(finalString userId) {
UserInfo userInfo=newUserInfo(userId,用戶名,Uri.parse(頭像的url地址));
return userInfo;
}
}, true);

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

到此結束,謝謝閱讀

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容

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