領(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