本篇文章針對(duì)第一次集成環(huán)信sdk的同學(xué),以自己的集成經(jīng)驗(yàn)寫(xiě)一個(gè)集成示例,希望可以幫到大家.
由于圖片比較直觀,更容易表達(dá),所以使用大量圖片.
先說(shuō)明下: 環(huán)信sdk3.2.2.r2(包含這個(gè)版本)之前,都是靜態(tài)庫(kù).a
從開(kāi)始sdk3.2.3只有動(dòng)態(tài)庫(kù).framework.而且需要編譯環(huán)境最低iOS 8(主要是蘋(píng)果動(dòng)態(tài)庫(kù)編譯僅支持iOS 8以上),順便介紹下easeUI建議手動(dòng)導(dǎo)入,因?yàn)楹芏嚅_(kāi)發(fā)者需求不能滿足,需要基于easeUI二次開(kāi)發(fā),手動(dòng)導(dǎo)入方便測(cè)試和修改源碼;easeUI使用指南官方鏈接:http://docs.easemob.com/im/300iosclientintegration/85easeuiguide
功能上的區(qū)別
直接看官方更新日志:http://docs.easemob.com/im/300iosclientintegration/130iosqa
頭文件區(qū)別:
靜態(tài)庫(kù):
不包含實(shí)時(shí)語(yǔ)音版本 SDK(HyphenateLite),引用時(shí) #import <HyphenateLite_CN/EMSDK.h>
包含實(shí)時(shí)語(yǔ)音版本 SDK(Hyphenate),引用時(shí) #import<Hyphenate_CN/EMSDKFull.h>
動(dòng)態(tài)庫(kù):
不包含實(shí)時(shí)語(yǔ)音版本 SDK(HyphenateLite),引用時(shí) #import<HyphenateLite/HyphenateLite.h>
包含實(shí)時(shí)語(yǔ)音版本 SDK(Hyphenate),引用時(shí) #import<Hyphenate/Hyphenate.h>
1.從環(huán)信官網(wǎng)下載最新動(dòng)態(tài)庫(kù)sdk3.2.3鏈接:http://www.easemob.com/download/im

2.我在這里直接拖入包含實(shí)時(shí)語(yǔ)音sdk和easeUI到空項(xiàng)目如圖:




細(xì)心的同學(xué)發(fā)現(xiàn)以前的依賴庫(kù)并沒(méi)有添加,基于動(dòng)態(tài)庫(kù)集成我們不需要添加任何依賴庫(kù)了.
如果您是靜態(tài)庫(kù)集成還是需要導(dǎo)入下面SDK 依賴庫(kù)有:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.tbz
libz.tbz
libstdc++.6.0.9.tbz
libsqlite3.tbz
libiconv.tbz (包含實(shí)時(shí)語(yǔ)音sdk需要導(dǎo)入)
第 2 步:SDK 不支持 bitcode,向 Build Settings → Linking → Enable Bitcode 中設(shè)置 NO。

3.我們?yōu)轫?xiàng)目創(chuàng)建一個(gè)pch,來(lái)處理sdk和easeUI編譯,并設(shè)置pch路徑;





4.下面我們?cè)僮鲆粋€(gè)測(cè)試,在客戶端注冊(cè)一個(gè)環(huán)信賬號(hào)并登陸;
首先后臺(tái)設(shè)置開(kāi)放注冊(cè)模式:

然后我們根據(jù)官方文檔簡(jiǎn)單測(cè)試:http://docs.easemob.com/im/300iosclientintegration/30iossdkbasic

測(cè)試通過(guò)注冊(cè)并登錄.哈哈

打包上架appstore之前分離sdk 刪除i386 x86_64架構(gòu)(用于模擬器運(yùn)行)兩個(gè)平臺(tái) ;(注意分離之后只能真機(jī)運(yùn)行sdk,如果還想模擬器和真機(jī)運(yùn)行,只需把沒(méi)有分離過(guò)的.framework文件替換自己項(xiàng)目里的即可)請(qǐng)參考這位大神鏈接http://www.itdecent.cn/p/f058b25163b8
下面介紹一下對(duì)已有項(xiàng)目集成經(jīng)常遇到報(bào)錯(cuò),解決方案
報(bào)錯(cuò)1:首先介紹下環(huán)信easeUI里面默認(rèn)集成第三方庫(kù)有:

這些第三方庫(kù)如果自己的已有項(xiàng)目已經(jīng)存在,需要?jiǎng)h除其中一個(gè),一般項(xiàng)目已有的已經(jīng)很依賴,那就刪除環(huán)信的即可;有些人這時(shí)就不知道怎么整合了,其實(shí)可以根據(jù)報(bào)錯(cuò)可以直接看出報(bào)錯(cuò)具體位置,直接導(dǎo)入自己的第三方頭文件即可.
報(bào)錯(cuò)2:加密庫(kù)沖突解決
報(bào)錯(cuò)一般會(huì)提示openssl 和libssl,這個(gè)暫時(shí)解決辦法只有刪掉加密庫(kù),不要支付寶前端加密.另外如果項(xiàng)目中有其他的音頻和視頻sdk也會(huì)產(chǎn)生沖突, 也只能選擇刪除其中一個(gè)sdk.下圖支付寶加密庫(kù)刪除如圖:

報(bào)錯(cuò)3:報(bào)錯(cuò)找不到UIKit框架類名
最近發(fā)現(xiàn)pch設(shè)置參考官方環(huán)信demo,還是報(bào)錯(cuò).發(fā)現(xiàn)pch里面使用自定義宏NSLog里面有C語(yǔ)言printf 會(huì)導(dǎo)致 報(bào)錯(cuò),注釋掉解決
報(bào)錯(cuò)4:基于已有項(xiàng)目報(bào)錯(cuò)C++變量找不到
因?yàn)閯?dòng)態(tài)庫(kù)集成不需要導(dǎo)入依賴庫(kù)了,但是有些項(xiàng)目會(huì)報(bào)錯(cuò)找不到C++變量,解決方案導(dǎo)入依賴庫(kù)libc++.tbz即可.
報(bào)錯(cuò)5:build setting => treart warning as errors 設(shè)置yes
