由于項目中需要聊天功能,所以最近幾天研究了環信demo的集成,在集成過程中遇到了N多個BUG,集成過程及其的艱辛,因為環信聊天畢竟是一個很大的框架,在集成過程中出現重復編譯在所難免,通過自己的努力并且咨詢了環信的技術客服,終于集成成功,現在分享一下自己的集成步驟。
- 首先是導入環信的sdk,編譯,這個過程的困難不是很多,簡單提一下,首先下載好EaseMobSDK,這里注意一點的是,lib靜態庫中包括
EaseMobClientSDKLite
和EaseMobClientSDK
這兩種,如果你需要實時語音的話選擇EaseMobClientSDK
,否則選擇EaseMobClientSDKLite
,兩者只能導入一個。 - 其次添加需要的靜態庫
MobileCoreServices.framework
CFNetwork.framework
ibsqlite3.dylib
libstdc++.6.0.9.dylib
libz.dylib
libiconv.dylib
libresolv.dylib
libxml2.dylib
(如果使用的是xcode7,后綴為tbd)
- 最后向Build Settings → Linking → Other Linker Flags 中 添加-ObjC(注意大小寫)
以上過程基本不會出現問題,在運行編譯都能通過。
主要是環信UI的集成過程中會出現很多問題,官方也沒有具體說如何導入,只是簡略說一下參照demo,然后就開始將自定義過程,現在我將這個過程寫一遍,大家仔細看好。
可能會出現以下錯誤
-
1、
錯誤一
這個報錯就是導入SDK是將EaseMobClientSDKLite
和EaseMobClientSDK
這兩個靜態庫重復導入,刪除不需要的即可。(如果上面已經刪除過,忽略錯誤一)
- 2、
了解這個錯誤首先要知道環信靜態庫lib,包含連個靜態庫libEaseMobClientSDK.a
和libEaseMobClientSDKLite.a
。 libEaseMobClientSDKLite.a
不包含實時語音功能,libEaseMobClientSDK.a
包含所有功能。如果你的app中不需要實時語音功能,刪掉libEaseMobClientSDK.a
只使用libEaseMobClientSDKLite.a
即可,需要實時音視頻功能同理,刪掉libEaseMobClientSDKLite.a
即可。
-ObjC
是配合libEaseMobClientSDK.a
使用的,-force_load
加靜態庫路徑是配合libEaseMobClientSDKLite.a
使用的,所以-force_load
所加靜態庫路徑是libEaseMobClientSDKLite.a
的路徑,不要混淆。
其次還有要導入FixFopen.c
地址如下:
- 3、
當你導入FixFopen.c
時可能出現錯誤三
出現這個錯誤是你在導入
在導入上述文件的的時候沒有添加所需要的依賴庫,出現錯誤三只需要添加以下缺失的庫文件:
- 4、
導入EaseUI
時,需要配置pch
文件,如果你項目中本身帶有pch
文件,將所需要的頭文件導入你的項目中即可,但是導入可能會出現錯誤,如下(錯誤四)
只需加上#ifdef __OBJC__
#endif
條件即可。
還有在運行環信的過程中,會出現警告Warning!ivar size mismatch in PSUICollectionView_ - cannot change the superclass
,其實這個警告是無任何影響的,解決辦法非常簡單,將PSTCollectionView.m
的 char filler[200]
替換成char filler[300]
即可。
最后提醒大家一點的是,在你導入的文件中可能會重復導入了某個第三方庫,刪除即可,如果與項目中沖突刪除即可。此外對于使用第三方庫管理cocopods所出現的錯誤還沒有研究過,后期會更新。。。
以上是快速集成環信SDK和UI出現錯誤的一些總結,再此感謝環信客服1019的幫助,對于環信具體的使用,參照官方demo即可,后期我也會繼續更新環信的具體使用,希望大家能夠提出寶貴意見,以便完善環信的使用,讓更多新手能夠快速集成環信到自己的項目中...