环信demo3的集成问题
由于项目中需要聊天功能,所以最近几天研究了环信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即可,后期我也会继续更新环信的具体使用,希望大家能够提出宝贵意见,以便完善环信的使用,让更多新手能够快速集成环信到自己的项目中...