IOS快速集成環(huán)信IM - 基于官方的Demo優(yōu)化婿屹,5分鐘集成環(huán)信IM功能

領(lǐng)導(dǎo)說一天內(nèi)要集成IM功能灭美,我頓時被嚇尿了~~

說明

本項目是基于官方?ChatDemo-UI3.0 (官方Demo源碼下載)項目的簡化封裝,目的是為了讓大家更加方便快速地集成環(huán)信IM功能昂利。

Git地址:http://git.oschina.net/markies/ChatDemo-UI3.00-Simple?(本項目會保持與環(huán)信的SDK同步更新)

奮斗目標

分離第三方依賴庫届腐,避免與開發(fā)者現(xiàn)有項目的其它類庫發(fā)生沖突;

抽象開發(fā)者可定制化的方法或配置參數(shù)蜂奸;

其它未確定的封裝工作犁苏,最終目的:高內(nèi)聚,低耦合扩所;

整理開發(fā)者開始集成時反饋的常見性問題围详,從實際項目考慮優(yōu)化SDK集成的簡易度。

最終成果

1.便于開發(fā)者在新項目或現(xiàn)有項目快速集成環(huán)信SDK祖屏,實現(xiàn)聊天界面和會話列表功能短曾,而且可以靈活地定制化一些基礎(chǔ)模塊;

2.低耦合赐劣,用盡可能少的代碼集成環(huán)信功能嫉拐,盡量少污染開發(fā)者的項目代碼;

如有任何問題魁兼,請聯(lián)系QQ:?364223587

注意:?由于Git不支持上傳大于100MB的文件婉徘,所以項目源碼中不包含?libHyphenateFullSDK.a?文件,需要自行去官網(wǎng)下載http://www.easemob.com/download/im咐汞,然后拷貝到目錄【/ChatDemo-UI3.0-Sample/ChatDemo-UI3.0/ChatSDK/HyphenateFullSDK/lib】才能正常運行盖呼。

本文的簡版Demo完整源碼可到360網(wǎng)盤下載https://yunpan.cn/cRJKsbAA4qvXt(提取碼:2a35)

單獨的?libHyphenateFullSDK.a下載地址https://yunpan.cn/cRqx72ByhXRQG(提取碼:b553)

經(jīng)過對ChatUIDemo-UI3.0中的源碼進行分析可知,用戶初次集成EaseUI時化撕,會遇到如下幾個常見問題:

問題1

引用Parse.framework几晤、Bolts.framework時項目容易出錯或出現(xiàn)Not found問題,其實這兩個庫并不是必須的植阴,而且Facebook已經(jīng)確定在2017年1月份停止提供Parse服務(wù)蟹瘾。

解決方案:刪除Parse相關(guān)類,用 UserCacheManager替代管理用戶緩存掠手。

問題2

ChatDemoHelper輔助類集成了很多聊天相關(guān)界面的操作方法憾朴,開發(fā)者一般會直接復(fù)用,但是ChatDemoHelper對MainViewController的函數(shù)依賴度比較高喷鸽,比如

[weakself.mainVC setupUnreadMessageCount];[self.mainVC networkChanged:connectionState];

解決方案

(1)將ChatDemoHelper中的mainVC類型更換成UIViewController众雷;

(2).將MainController中的幾個方法用通知(NSNotificationCenter)實現(xiàn);

問題3

聊天相關(guān)頁面與業(yè)務(wù)邏輯頁面放在同一目錄中,對于開發(fā)者來說砾省,需要分揀鸡岗;

解決方案:將環(huán)信相關(guān)的文件、資源統(tǒng)一放在【ChatUI】和【ChatSDK】目錄中编兄,方便開發(fā)者直接拖拽這兩個文件夾即可快速集成聊天功能纤房。

關(guān)于昵稱和頭像的問題

IOS中如何顯示開發(fā)者服務(wù)器上的昵稱和頭像http://community.easemob.com/article/825307855

>>>>>>>>接下來,我們就一步步教大家如何快速集成環(huán)信IM功能:

1.新建一個IOS項目翻诉。打開XCode -> 【File】 -> 【New】 -> 【Project...】-> 【Single View Application】?,如下圖所示:

項目命名為【HxChatDemo】捌刮,然后選擇路徑保存即可:

2.加入環(huán)信IM相關(guān)的SDK以及界面代碼碰煌。下載源碼http://git.oschina.net/markies/ChatDemo-UI3.00-Simple,將解壓后文件夾中的【ChatSDK】和【ChatUI】目錄復(fù)制到新建項目【HxChatDemo】目錄下绅作,下載單獨的?libHyphenateFullSDK.a文件(【下載地址https://yunpan.cn/cRqx72ByhXRQG(提取碼:b553)】)芦圾,把?libHyphenateFullSDK.a文件拷貝到【ChatSDK/HyphenateFullSDK/lib/】目錄下,?然后將【ChatSDK】和【ChatUI】這兩個目錄拖入Xcode中:

3.引入SDK的依賴庫俄认。在Xcode中為項目新建一個名為【Frameworks】的group个少,然后依次按照下面的目錄添加依賴庫:

SDK 包含實時語音依賴庫有:

CoreMedia.framework

AudioToolbox.framework

AVFoundation.framework

MobileCoreServices.framework

ImageIO.framework

libc++.dylib

libz.dylib

libstdc++.6.0.9.dylib

libsqlite3.dylib

libiconv.dylib

(如果使用的是 xcode7,后綴為 tbd眯杏。)

4.增加預(yù)編譯頭文件pch夜焦,保證頭文件的全局引用。在【Supporting Files】目錄上單機右鍵 -> 【New File...】 -> 【Other】 -> 【PCH File】 -> 命名為【HxChatDemo-Prefix.pch】岂贩,加入如下代碼:

#import

#ifndef __IPHONE_3_0

#warning "This project uses features only available in iOS SDK 3.0 and later."

#endif

#define REDPACKET_AVALABLE

#ifdef __OBJC__

#import

#import

#import "EMAlertView.h"

#import "TTGlobalUICommon.h"

#import "EMSDKFull.h"

#import "EaseUI.h"

#import "ChatUIDefine.h"

#define DEMO_CALL 0

#endif

效果如下圖:

打開【Build Settings】茫经,在【Apple LLVM7.1- language】組中,將【Precompile Prefix Header】設(shè)置為【YES】萎津,將HxChatDemo-Prefix.pch文件拖入【Prefix Header】框中卸伞,如下圖所示:

OK~編譯運行成功!o鼻荤傲!大功告成!經(jīng)過如上幾個步驟颈渊,環(huán)信IM功能所需要的SDK以及EaseUI界面代碼都被成功導(dǎo)入項目了遂黍。

--------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如果需要引入單聊髓堪、群聊设预、聯(lián)系人列表等界面功能测萎,你就要參考簡版Demo項目中的代碼一步步操作了丙者,比如:

1.在項目中注冊環(huán)信APPKEY第练,參考Appdelegate.m中的代碼

2.注冊【接收消息】贮预、【好友通知消息】鉴分、【網(wǎng)絡(luò)變化】等回調(diào)事件糯笙,參考MainViewController.m中的代碼

NOTIFY_ADD(setupUntreatedApplyCount, kSetupUntreatedApplyCount);

NOTIFY_ADD(setupUnreadMessageCount, kSetupUnreadMessageCount);

NOTIFY_ADD(networkChanged, kConnectionStateChanged);

------》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

盆友,先別急關(guān)掉頁面~~~~彩蛋往往都是最后才隆重登場的~~~

不信唬党?那我們就舉個例子鹃共,一分鐘內(nèi)快速集成單聊功能:

1.在AppDelegate.m加入如下代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[[EaseSDKHelper shareHelper] easemobApplication:application

didFinishLaunchingWithOptions:launchOptions

appkey:@"easemob-demo#chatdemoui"

apnsCertName:nil

otherConfig:nil];

return YES;

}

2.然后,在ViewController.m中添加一個按鈕驶拱,并加入按鈕響應(yīng)代碼霜浴,實現(xiàn)環(huán)信登錄成功后自動打開單聊頁面的功能:

// 登錄環(huán)信并打開單聊界面

- (IBAction)doChat:(id)sender {

NSString *userName = @"martin1234";

NSString *pwd = @"martin1234";

[self showHudInView:self.view hint:@"Loading..."];

[[EMClient sharedClient] asyncLoginWithUsername:userName password:pwd success:^{

dispatch_async(dispatch_get_main_queue(), ^{

[self hideHud];

// 保存用戶信息

[UserCacheManager saveInfo:userName imgUrl:@"http://avatar.csdn.net/A/2/1/1 ... ot%3B nickName:userName];

//設(shè)置是否自動登錄

[[EMClient sharedClient].options setIsAutoLogin:YES];

[[ChatUIHelper shareHelper] asyncGroupFromServer];

[[ChatUIHelper shareHelper] asyncConversationFromDB];

[[ChatUIHelper shareHelper] asyncPushOptions];

//發(fā)送自動登陸狀態(tài)通知

[[NSNotificationCenter defaultCenter] postNotificationName:KNOTIFICATION_LOGINCHANGE object:@([[EMClient sharedClient] isLoggedIn])];

ChatViewController *vc = [[ChatViewController alloc]initWithConversationChatter:@"admin" conversationType:EMConversationTypeChat];

[self presentViewController:vc animated:YES completion:nil];

});

} failure:^(EMError *aError) {

NSLog(@"%@",aError.description);

}];

}

效果圖如下:

本文HxChatDemo項目下載地址:http://git.oschina.net/markies/HxChatDemo

本篇文章已同步發(fā)表在imgeek社區(qū):文章地址http://www.imgeek.org/article/825307886

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蓝纲,隨后出現(xiàn)的幾起案子阴孟,更是在濱河造成了極大的恐慌,老刑警劉巖税迷,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件永丝,死亡現(xiàn)場離奇詭異,居然都是意外死亡箭养,警方通過查閱死者的電腦和手機慕嚷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毕泌,“玉大人喝检,你說我怎么就攤上這事『撤海” “怎么了挠说?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愿题。 經(jīng)常有香客問我纺涤,道長,這世上最難降的妖魔是什么抠忘? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任撩炊,我火速辦了婚禮,結(jié)果婚禮上崎脉,老公的妹妹穿的比我還像新娘拧咳。我一直安慰自己,他們只是感情好囚灼,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布骆膝。 她就那樣靜靜地躺著,像睡著了一般灶体。 火紅的嫁衣襯著肌膚如雪阅签。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天蝎抽,我揣著相機與錄音政钟,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛养交,可吹牛的內(nèi)容都是我干的精算。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碎连,長吁一口氣:“原來是場噩夢啊……” “哼灰羽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鱼辙,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤廉嚼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倒戏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怠噪,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年峭梳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹂喻。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡葱椭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出口四,到底是詐尸還是另有隱情孵运,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布蔓彩,位于F島的核電站治笨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赤嚼。R本人自食惡果不足惜旷赖,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望更卒。 院中可真熱鬧等孵,春花似錦、人聲如沸蹂空。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽上枕。三九已至咐熙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辨萍,已是汗流浹背棋恼。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蘸泻。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓琉苇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悦施。 傳聞我的和親對象是個殘疾皇子并扇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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