本篇文章針對第一次集成環(huán)信sdk的同學(xué),以自己的集成經(jīng)驗寫一個集成示例,希望可以幫到大家.
由于圖片比較直觀,更容易表達,所以使用大量圖片.
先說明下: 環(huán)信sdk3.2.2.r2(包含這個版本)之前,都是靜態(tài)庫.a
從開始sdk3.2.3只有動態(tài)庫.framework.而且需要編譯環(huán)境最低iOS 8(主要是蘋果動態(tài)庫編譯僅支持iOS 8以上),順便介紹下easeUI建議手動導(dǎo)入,因為很多開發(fā)者需求不能滿足,需要基于easeUI二次開發(fā),手動導(dǎo)入方便測試和修改源碼;easeUI使用指南官方鏈接:http://docs.easemob.com/im/300iosclientintegration/85easeuiguide
功能上的區(qū)別
直接看官方更新日志:http://docs.easemob.com/im/300iosclientintegration/130iosqa
頭文件區(qū)別:
靜態(tài)庫:
不包含實時語音版本 SDK(HyphenateLite),引用時 #import <HyphenateLite_CN/EMSDK.h>
包含實時語音版本 SDK(Hyphenate)区拳,引用時 #import<Hyphenate_CN/EMSDKFull.h>
動態(tài)庫:
不包含實時語音版本 SDK(HyphenateLite)酒贬,引用時 #import<HyphenateLite/HyphenateLite.h>
包含實時語音版本 SDK(Hyphenate),引用時 #import<Hyphenate/Hyphenate.h>
1.從環(huán)信官網(wǎng)下載最新動態(tài)庫sdk3.2.3鏈接:http://www.easemob.com/download/im
2.我在這里直接拖入包含實時語音sdk和easeUI到空項目如圖:
細心的同學(xué)發(fā)現(xiàn)以前的依賴庫并沒有添加,基于動態(tài)庫集成我們不需要添加任何依賴庫了.
如果您是靜態(tài)庫集成還是需要導(dǎo)入下面SDK 依賴庫有:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.tbz
libz.tbz
libstdc++.6.0.9.tbz
libsqlite3.tbz
libiconv.tbz (包含實時語音sdk需要導(dǎo)入)
第 2 步:SDK 不支持 bitcode,向 Build Settings → Linking → Enable Bitcode 中設(shè)置 NO通孽。
3.我們?yōu)轫椖縿?chuàng)建一個pch,來處理sdk和easeUI編譯,并設(shè)置pch路徑;
4.下面我們再做一個測試,在客戶端注冊一個環(huán)信賬號并登陸;
首先后臺設(shè)置開放注冊模式:
然后我們根據(jù)官方文檔簡單測試:http://docs.easemob.com/im/300iosclientintegration/30iossdkbasic
測試通過注冊并登錄.哈哈
打包上架appstore之前分離sdk 刪除i386 x86_64架構(gòu)(用于模擬器運行)兩個平臺 ;(注意分離之后只能真機運行sdk,如果還想模擬器和真機運行,只需把沒有分離過的.framework文件替換自己項目里的即可)請參考這位大神鏈接http://www.reibang.com/p/f058b25163b8
下面介紹一下對已有項目集成經(jīng)常遇到報錯,解決方案
報錯1:首先介紹下環(huán)信easeUI里面默認(rèn)集成第三方庫有:
這些第三方庫如果自己的已有項目已經(jīng)存在,需要刪除其中一個,一般項目已有的已經(jīng)很依賴,那就刪除環(huán)信的即可;有些人這時就不知道怎么整合了,其實可以根據(jù)報錯可以直接看出報錯具體位置,直接導(dǎo)入自己的第三方頭文件即可.
報錯2:加密庫沖突解決
報錯一般會提示openssl 和libssl,這個暫時解決辦法只有刪掉加密庫,不要支付寶前端加密.另外如果項目中有其他的音頻和視頻sdk也會產(chǎn)生沖突, 也只能選擇刪除其中一個sdk.下圖支付寶加密庫刪除如圖:
報錯3:報錯找不到UIKit框架類名
最近發(fā)現(xiàn)pch設(shè)置參考官方環(huán)信demo,還是報錯.發(fā)現(xiàn)pch里面使用自定義宏NSLog里面有C語言printf 會導(dǎo)致 報錯,注釋掉解決
報錯4:基于已有項目報錯C++變量找不到
因為動態(tài)庫集成不需要導(dǎo)入依賴庫了,但是有些項目會報錯找不到C++變量,解決方案導(dǎo)入依賴庫libc++.tbz即可.