環(huán)信集成

android中如何顯示開發(fā)者服務(wù)器上的昵稱和頭像 http://www.imgeek.org/article/825307856
Android中顯示頭像(接上一篇文章看)
http://www.imgeek.org/article/825308239
環(huán)信(Android)設(shè)置頭像和昵稱的方法(最簡單暴力的基于環(huán)信demo的集成)
http://www.imgeek.org/article/825307875
IOS中如何顯示開發(fā)者服務(wù)器上的昵稱和頭像 http://www.imgeek.org/article/825307855草草們的憂傷:環(huán)信IM昵稱和頭像
http://www.imgeek.org/article/825308536
IOS快速集成環(huán)信IM - 基于官方的Demo優(yōu)化怠褐,5分鐘集成環(huán)信IM功能 http://www.imgeek.org/article/825307886
IOS中環(huán)信聊天窗口如何實現(xiàn)文件發(fā)送和預(yù)覽的功能 http://www.imgeek.org/question/6260
環(huán)信SDK為用戶開發(fā)IM相關(guān)的應(yīng)用提供的一套完整的開發(fā)框架

5020DA21-3F8A-42B5-81BF-9E79C9A628F5.png

  1. SDK_Core : 為核心的消息同步協(xié)議實現(xiàn),完成與服務(wù)器之間的信息交換

  2. SDK: 是基于核心協(xié)議實現(xiàn)的完整的IM功能,實現(xiàn)了不同類型消息的轉(zhuǎn)發(fā),會話管理,群組,好友,聊天室等功能

  3. EaseUI : 是一組IM相關(guān)的UI控件
    EaseUI 中用到的第三方庫:

    • MWPhotoBrowser: 圖片處理庫隅茎,瀏覽顯示
    • MJRefresh: 用于頁面刷新
    • MBProgressHUD: 用于提示加載刷新
    • libopencore-amrnb.a,libopencore-amrwb.a: 用于 amr 與 wav 之間的轉(zhuǎn)換
EBF46758-DB1D-47B3-B94B-D95CCE40B647.png

簡述:
EMClient:是SDK的入口,主要完成登錄,退出,連接管理等功能,也是獲取其他模塊的入口
EMChatManager: 管理消息的收發(fā),完成會話管理等功能
EMContactManager:負責好友的添加刪除,黑名單的管理
EMGroupManage:負責勸阻的管理,創(chuàng)建,刪除群組,管理群組成員等功能
EMChatroomManager: 負責聊天室的管理

SDK 目錄講解

  • 環(huán)信 iOS HyphenateSDK 開發(fā)使用(不包含實時通話功能)
  • 環(huán)信 iOS HyphenateFullSDK (包含實時通話功能)
  • 環(huán)信 iOS doc SDK 相關(guān)API文檔
  • 環(huán)信 iOS ChatUIDemo3.0 工程源碼
  • 環(huán)信 iOS EaseUI 工程源碼
  • 環(huán)信 iOS chatdemo-ui-3.x.x.ipa 打包的 ipa

注冊

  • 注冊模式分為兩種
    <1> 開放注冊
    <2> 授權(quán)注冊

  • 開放注冊時,才可以客戶端注冊。開放注冊是為了測試使用构捡,正式環(huán)境中不推薦使用該方式注冊環(huán)信賬號。

  • 授權(quán)注冊的流程應(yīng)該是您服務(wù)器通過環(huán)信提供的 REST API
    注冊壁查,之后保存到您的服務(wù)器或返回給客戶端衩婚。

注冊:調(diào)用的接口

EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];if (error==nil) { NSLog(@"注冊成功");}```
登錄:調(diào)用

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];if (!error) { NSLog(@"登錄成功");}```

自動登錄
自動登錄:即首次登錄成功后,不需要再次調(diào)用登錄方法助赞,在下次 APP 啟動時买羞,SDK 會自動為您登錄。并且如果您自動登錄失敗雹食,也可以讀取到之前的會話信息畜普。

SDK 中自動登錄屬性默認是關(guān)閉的,需要您在登錄成功后設(shè)置群叶,以便您在下次 APP 啟動時不需要再次調(diào)用環(huán)信登錄吃挑,并且能在沒有網(wǎng)的情況下得到會話列表钝荡。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{ 
[[EMClient sharedClient].options setIsAutoLogin:YES];
}```
- 自動登錄被取消的情況:
   - 用戶調(diào)用了 SDK 的登出動作;
   - 用戶在別的設(shè)備上更改了密碼舶衬,導致此設(shè)備上自動登錄失敳和ā;
   - 用戶的賬號被從服務(wù)器端刪除逛犹;
   - 用戶從另一個設(shè)備登錄端辱,把當前設(shè)備上登錄的用戶踢出。
那么在調(diào)用登錄方法之前,應(yīng)該先判斷是否設(shè)置了自動登錄,如果設(shè)置了,則不需要再調(diào)用了
     ```
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (!isAutoLogin)
 { 
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
}```
SDK中,如果發(fā)生自動登錄,會有以下回調(diào):

*/- (void)didAutoLoginWithError:(EMError *)aError
//添加回調(diào)監(jiān)聽代理:
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];```

重連
當?shù)艟€時,iOS SDK 會自動重連,只需要監(jiān)聽重連相關(guān)的回調(diào),不需要進行任何操作

- (void)didConnectionStateChanged:(EMConnectionState)aConnectionState;
 * SDK連接服務(wù)器的狀態(tài)變化時會接收到該回調(diào) 
*
* 有以下幾種情況虽画,會引起該方法的調(diào)用:
* 1. 登錄成功后舞蔽,手機無法上網(wǎng)時,會調(diào)用該回調(diào) 
* 2. 登錄成功后狸捕,網(wǎng)絡(luò)狀態(tài)變化時喷鸽,會調(diào)用該回調(diào) 
* 
* @param aConnectionState 當前狀態(tài) */

  • 退出登錄
    • 主動退出

EMError *error = [[EMClient sharedClient] logout:YES];
if (!error) {
NSLog(@"退出成功");
}```

  • 被動退出登錄

  • 正在登錄的賬號在另一臺設(shè)備上登錄众雷;

  • 正在登錄的賬號被從服務(wù)器端刪除灸拍。
    logout:YES:是否解除 device token 的綁定,在被動退出時 SDK 內(nèi)部處理砾省,不需要調(diào)用退出方法
    當?shù)卿涃~號在其他設(shè)備登錄時會接受到該回調(diào)
    - (void)didLoginFromOtherDevice;
    當前登錄賬號已經(jīng)被從服務(wù)器端刪除時會收到該回調(diào)
    - (void)didRemovedFromServer;

  • 消息
    消息:IM 交互實體鸡岗,在 SDK 中對應(yīng)的類型是 EMMessageEMMessage 由 EMMessageBody 組成编兄。

  • 構(gòu)造文字信息

  • 構(gòu)造圖片消息

  • 構(gòu)造位置信息

  • 構(gòu)造語音消息

  • 構(gòu)造視頻消息

  • 構(gòu)造文件消息

  • 構(gòu)造透傳消息
    SDK提供的一種特殊類型的消息,即CMD,不會存db,也不會走APNS,類似一種指令型的消息,比如您的服務(wù)器是要通知客戶端做某些操作,您可以服務(wù)器和客戶端提前約定好某個字段,當客戶端收到約定好的字段時,執(zhí)行某種特殊的操作

  • 構(gòu)造擴展消息
    當 SDK 提供的消息類型不滿足需求時轩性,開發(fā)者可以通過擴展自 SDK 提供的文本、語音狠鸳、圖片揣苏、位置等消息類型,從而生成自己需要的消息類型件舵。

這里是擴展自文本消息卸察,如果這個自定義的消息需要用到語音或者圖片等,可以擴展自語音铅祸、圖片消息坑质,亦或是位置消息。

  • 插入消息
  • 更新消息屬性
  • 會話
  • 新建/獲取一個會話
  • 刪除會話
    刪除單個會話
    刪除批量會話根據(jù) conversationId
    獲取會話列表(3種方法)
    獲取或創(chuàng)建

EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];獲取內(nèi)存中所有會話
NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];```
獲取DB中的所有會話

[NSArray](http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/) *conversations = [[EMClient sharedClient].chatManager loadAllConversationsFromDB];```
    
- 消息檢索
可以通過關(guān)鍵字临梗、消息類型涡扼、開始結(jié)束時間檢索某個會話中的消息。

- 聊天
   - 發(fā)送消息(異步方法)
   - 接收消息1>注冊消息回調(diào)  2>在線普通消息回調(diào)  3> 透傳在線消息回調(diào)
   - 解析普通消息
   - 解析透傳消息
   - 解析消息擴展屬性 
   - 自動下載消息中的附件
       SDK 接收到消息后盟庞,會默認下載:圖片消息的縮略圖吃沪,語音消息的語音,視頻消息的視頻第一幀什猖。
**請先判斷你要下載附件沒有下載成功之后票彪,在調(diào)用以下下載方法萎津,否則SDK下載方法會再次從服務(wù)器上獲取附件。**

- 聊天會話功能擴展

EaseUI 提供現(xiàn)成的聊天會話 ViewController抹镊,可以通過繼承 EaseMessageViewController 方式(參考 ChatDemo-UI3.0 中 ChatViewController)實現(xiàn)對聊天會話的擴展锉屈。

也可以直接使用 EaseMessageViewController,通過 EaseMessageViewControllerDelegate 和 EaseMessageViewControllerDataSource 兩個協(xié)議實現(xiàn)對 EaseMessageViewController 的擴展垮耳。



- 自定義聊天樣式
EaseMessageViewControllerDelegate

獲取自定義消息 cell颈渊,根據(jù) messageModel,用戶自己判斷是否顯示自定義消息 cell终佛。如果返回 nil 會顯示默認俊嗽;如果返回 cell 會顯示用戶自定義消息cell。

自定義用戶的頭像

/*! @method
@brief 點擊消息頭像
@discussion 獲取用戶點擊頭像回調(diào)
@param viewController 當前消息視圖
@param messageModel 消息模型
@result
*/

  • (void)messageViewController:(EaseMessageViewController *)viewController didSelectAvatarMessageModel:(id<IMessageModel>)messageModel;
    //獲取用戶點擊頭像回調(diào)的樣例:
  • (void)messageViewController:(EaseMessageViewController *)viewController didSelectAvatarMessageModel:(id<IMessageModel>)messageModel
    {
    //UserProfileViewController用戶自定義的個人信息視圖
    //樣例的邏輯是選中消息頭像后铃彰,進入該消息發(fā)送者的個人信息
    UserProfileViewController *userprofile = [[UserProfileViewController alloc] initWithUsername:messageModel.message.from];

[self.navigationController pushViewController:userprofile animated:YES];```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绍豁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子牙捉,更是在濱河造成了極大的恐慌竹揍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邪铲,死亡現(xiàn)場離奇詭異芬位,居然都是意外死亡,警方通過查閱死者的電腦和手機带到,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門昧碉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人揽惹,你說我怎么就攤上這事被饿。” “怎么了搪搏?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵狭握,是天一觀的道長。 經(jīng)常有香客問我慕嚷,道長哥牍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任喝检,我火速辦了婚禮嗅辣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挠说。我一直安慰自己澡谭,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛙奖,像睡著了一般潘酗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雁仲,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天仔夺,我揣著相機與錄音,去河邊找鬼攒砖。 笑死缸兔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吹艇。 我是一名探鬼主播惰蜜,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼受神!你這毒婦竟也來了抛猖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤鼻听,失蹤者是張志新(化名)和其女友劉穎财著,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體精算,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡瓢宦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灰羽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鱼辙,死狀恐怖廉嚼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倒戏,我是刑警寧澤怠噪,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站杜跷,受9級特大地震影響傍念,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜葛闷,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一憋槐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淑趾,春花似錦阳仔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘶摊。三九已至,卻和暖如春评矩,著一層夾襖步出監(jiān)牢的瞬間叶堆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工斥杜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹂空,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓果录,卻偏偏與公主長得像上枕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弱恒,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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