注册

iOS集成环信3.0总结

 最近刚做完一个有即时通讯功能的APP , 之前我集成过环信2.0+3.0的UI ,这次想直接用一下环信3.0 , 不出所料 , 集成过程中还是出现很多困难 , 所以单单集成的过程 , 也需要捣腾个一天 ,当然也要感谢环信技术支持 , 虽然大多数时候他会直接甩我一句:"自行百度就行" ,还有可以去https://www.imgeek.org/这个网站提问题 , 最好邀请一些经常回答问题的大神

下面说正事 :

一般用这些SDK , 第一件事就是看文档 , 但是因为环信框架大 , 文档里面说的不会太详细, 我按照文档里面的集成方法试了几次都不行 , 所以我们可以直接参考Demo ,首先看看效果:​我这里展示的只是会话和加好友,联系人功能哦



005TbQ0Qgy70z6EnFDQ12.gif


Demo运行 

我下载的是IM2.x,里面包含​​2.0Demo , 3.0的Demo , 单独的EaseUI等等(还有红包功能哦)



005TbQ0Qgy70z71TCZ99f.png


IM2.x

第一步:导入所需文件(因为文件里面有的会包括依赖库,所以我们先导入文件)

1.导入SDK

我是参照IM2.x里面的3.0Demo来导文件的 ,​ 所以我导入的SDK是EaseMobSDK(直接把整个SDK拉进去) ,而(IM3.x)的SDK是libHyphenateSDK

注意:3.0Demo里面的EaseMobSDK的lib这个文件夹有两个 , 一个是libEaseMobClientSDK.a(语音) 一个是libEaseMobClientSDKLite.a(无语音)这两个同时存在的话会有冲突的,将你不需要的一个删了就行了 , 



005TbQ0Qgy70z8UFukw68.png


我用的是带语音的libEaseMobClientSDK.a

​拉完SDK之后要在Building Settilngs 里面的 Otherlinking 里面设置一下,如果你选之前选择了libEaseMobClientSDK.a , 就输入-ObjC ,此 -ObjC是配合libEaseMobClientSDK.a使用的,如果你之前选择了libEaseMobClientSDKLite.a, 就输入-force_load ,-force_load加静态库路径是配合libEaseMobClientSDKLite.a使用的



005TbQ0Qgy70z91pvNv61.png


设置​

详细参考官方文档:

  2.导入EaseUI文件

拖入EasyUI工程下的EaseUI文件夹、EaseUIResource里面的Resource文件夹、export文件夹里面的resources文件下的EaseUIResource.bundle​



005TbQ0Qgy70z9hDM9u84.png



3.导入 CahtDemo-UI3.0下的文件 

注意:Class里面包含有AppDelegate文件,可以选择删除自己的AppDelegate文件 ,亦可以把里面的你需要代码复制到你的AppDelegate中



005TbQ0Qgy70z9vDMS22e.png



 第一步所有的文件已导入了 , 如果你手痒可以试着运行下 ,但是肯定会报各种各样的错


第二步:​ 我们需要一个PCH预编译头文件来全局引用某些文件

你可以新建一个pch文件,确保路径正确,在pch文件里面添加EaseUI-Prefix.pch(里面导入的文件如果和ChatDemo-UI3.0-Prefix.pch导入的重复了,可以直接删了这个文件)、ChatDemo-UI3.0-Prefix.pch这两个文件里面的代码​, 如果你项目中不需要别的pch文件,你可以直接导入ChatDemo-UI3.0-Prefix.pch的路径就行了(因为这是一个Demo ,所以我是直接导入ChatDemo-UI3.0-Prefix.pch)

​pch文件导入的路径最好加上$(SRCROOT) , 在Building Settilngs 里面的 prefix header 里面设置, 详细的自行百度



005TbQ0Qgy70zabjET791.png


设置pch文件的路径

第三步,导入依赖库

现在开始导入依赖库 , 这是你会发现Linker Frameworks andLibraries里面已经有几个依赖库了 , 检查一下 , 把重复的先删了 ,如果里面同时发现了libEaseMobClientSDK.a和 EaseMobClientSDKLite.a ,就说明你第一步的步骤没完成 ,正常来说里面只有其中一个.a文件

一开始 , 我按照3.0文档的依赖库添加 , 后来报这个错误



4d63c3822c58c6146b1e103c726053ed.gif


报错

后来我核对了一下 ,  发现跟文档中导入的依赖库一样啊 , 后来我就去骚扰他们的客服 ,他让我再加一个依赖库libiconv.tbd(但是官方文档根本没有提到要加入这个库,坑!)

我是直接参照Demo里面添加的依赖库添加的 , 这样比较安全一点 ,很多错误都是由于少导入某一两个依赖库造成的 , 再次检查需要耗时间 , 所以我直接全部添加​



005TbQ0Qgy70zlDE41Kcc.png



如果你遇到这个报错 , 里面带有parse twitter字眼的 ,大多数都是缺少导入parse的依赖库: 
StoreKit.framework
Bolts.framework
Parse.framework
Accounts.framework
Social.framework
 



005TbQ0Qgy70zlKHatae0.jpg



步骤已经说完了, 如果现在运行当然还是会遇到很多报错.

现在主要来总结一下报错原因:​

如果报的错是 linkercommand failed with exit code 1 (use -v to seeinvocation)

​不能只看红色报错的哪一行 , 要看看上面的内容有什么比较明显的字眼​

1. 如果有报错说的是关于BackupViewController的 ,直接把文件删除就好,这个文件是没用的



005TbQ0Qgy70zma8NBA3e.png


1

2.​如果看到报错上面开头是duplicate的 , 说明你重复导入了某些文件 ,再看看字眼里面如果有VoiceConvert,  MBProgressHUD ,  在全局搜索里面搜出来, 把其中的一个删掉就行了 , 一般来说我是删除EaseUI里面的VoiceConvert文件夹和三方里面的MBProgressHUD 



005TbQ0Qgy70zmd9gvK78.png


2

3.如果你项目里面用到MJRefresh , SDWebImage什么的起冲突了 是因为环信里面也有用到这些三方 ,删掉环信的就行了

​本篇集成文章由环信热心用户Scorpion_ZJ 发表在个人博客,博客地址Scorpion_ZJ

2 个评论

楼主有这个的源码吗?
这是环信热心用户提供的,你可以点击下博客地址私信问下作者

要回复文章请先登录注册