iOS集成环信3.0总结
最近刚做完一个有即时通讯功能的APP , 之前我集成过环信2.0+3.0的UI ,这次想直接用一下环信3.0 , 不出所料 , 集成过程中还是出现很多困难 , 所以单单集成的过程 , 也需要捣腾个一天 ,当然也要感谢环信技术支持 , 虽然大多数时候他会直接甩我一句:"自行百度就行" ,还有可以去https://www.imgeek.org/这个网站提问题 , 最好邀请一些经常回答问题的大神
下面说正事 :
一般用这些SDK , 第一件事就是看文档 , 但是因为环信框架大 , 文档里面说的不会太详细, 我按照文档里面的集成方法试了几次都不行 , 所以我们可以直接参考Demo ,首先看看效果:我这里展示的只是会话和加好友,联系人功能哦
我下载的是IM2.x,里面包含2.0Demo , 3.0的Demo , 单独的EaseUI等等(还有红包功能哦)
第一步:导入所需文件(因为文件里面有的会包括依赖库,所以我们先导入文件)
1.导入SDK
我是参照IM2.x里面的3.0Demo来导文件的 , 所以我导入的SDK是EaseMobSDK(直接把整个SDK拉进去) ,而(IM3.x)的SDK是libHyphenateSDK
注意:3.0Demo里面的EaseMobSDK的lib这个文件夹有两个 , 一个是libEaseMobClientSDK.a(语音) 一个是libEaseMobClientSDKLite.a(无语音)这两个同时存在的话会有冲突的,将你不需要的一个删了就行了 ,
拉完SDK之后要在Building Settilngs 里面的 Otherlinking 里面设置一下,如果你选之前选择了libEaseMobClientSDK.a , 就输入-ObjC ,此 -ObjC是配合libEaseMobClientSDK.a使用的,如果你之前选择了libEaseMobClientSDKLite.a, 就输入-force_load ,-force_load加静态库路径是配合libEaseMobClientSDKLite.a使用的
详细参考官方文档:
2.导入EaseUI文件
拖入EasyUI工程下的EaseUI文件夹、EaseUIResource里面的Resource文件夹、export文件夹里面的resources文件下的EaseUIResource.bundle
3.导入 CahtDemo-UI3.0下的文件
注意:Class里面包含有AppDelegate文件,可以选择删除自己的AppDelegate文件 ,亦可以把里面的你需要代码复制到你的AppDelegate中
第一步所有的文件已导入了 , 如果你手痒可以试着运行下 ,但是肯定会报各种各样的错
第二步: 我们需要一个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 里面设置, 详细的自行百度
第三步,导入依赖库
现在开始导入依赖库 , 这是你会发现Linker Frameworks andLibraries里面已经有几个依赖库了 , 检查一下 , 把重复的先删了 ,如果里面同时发现了libEaseMobClientSDK.a和 EaseMobClientSDKLite.a ,就说明你第一步的步骤没完成 ,正常来说里面只有其中一个.a文件
一开始 , 我按照3.0文档的依赖库添加 , 后来报这个错误
后来我核对了一下 , 发现跟文档中导入的依赖库一样啊 , 后来我就去骚扰他们的客服 ,他让我再加一个依赖库libiconv.tbd(但是官方文档根本没有提到要加入这个库,坑!)
我是直接参照Demo里面添加的依赖库添加的 , 这样比较安全一点 ,很多错误都是由于少导入某一两个依赖库造成的 , 再次检查需要耗时间 , 所以我直接全部添加
如果你遇到这个报错 , 里面带有parse twitter字眼的 ,大多数都是缺少导入parse的依赖库:
步骤已经说完了, 如果现在运行当然还是会遇到很多报错.
现在主要来总结一下报错原因:
如果报的错是 linkercommand failed with exit code 1 (use -v to seeinvocation)
不能只看红色报错的哪一行 , 要看看上面的内容有什么比较明显的字眼
1. 如果有报错说的是关于BackupViewController的 ,直接把文件删除就好,这个文件是没用的
2.如果看到报错上面开头是duplicate的 , 说明你重复导入了某些文件 ,再看看字眼里面如果有VoiceConvert, MBProgressHUD , 在全局搜索里面搜出来, 把其中的一个删掉就行了 , 一般来说我是删除EaseUI里面的VoiceConvert文件夹和三方里面的MBProgressHUD
3.如果你项目里面用到MJRefresh , SDWebImage什么的起冲突了 是因为环信里面也有用到这些三方 ,删掉环信的就行了
本篇集成文章由环信热心用户Scorpion_ZJ 发表在个人博客,博客地址Scorpion_ZJ
下面说正事 :
一般用这些SDK , 第一件事就是看文档 , 但是因为环信框架大 , 文档里面说的不会太详细, 我按照文档里面的集成方法试了几次都不行 , 所以我们可以直接参考Demo ,首先看看效果:我这里展示的只是会话和加好友,联系人功能哦
Demo运行
我下载的是IM2.x,里面包含2.0Demo , 3.0的Demo , 单独的EaseUI等等(还有红包功能哦)
IM2.x
第一步:导入所需文件(因为文件里面有的会包括依赖库,所以我们先导入文件)
1.导入SDK
我是参照IM2.x里面的3.0Demo来导文件的 , 所以我导入的SDK是EaseMobSDK(直接把整个SDK拉进去) ,而(IM3.x)的SDK是libHyphenateSDK
注意:3.0Demo里面的EaseMobSDK的lib这个文件夹有两个 , 一个是libEaseMobClientSDK.a(语音) 一个是libEaseMobClientSDKLite.a(无语音)这两个同时存在的话会有冲突的,将你不需要的一个删了就行了 ,
我用的是带语音的libEaseMobClientSDK.a
拉完SDK之后要在Building Settilngs 里面的 Otherlinking 里面设置一下,如果你选之前选择了libEaseMobClientSDK.a , 就输入-ObjC ,此 -ObjC是配合libEaseMobClientSDK.a使用的,如果你之前选择了libEaseMobClientSDKLite.a, 就输入-force_load ,-force_load加静态库路径是配合libEaseMobClientSDKLite.a使用的
设置
详细参考官方文档:
2.导入EaseUI文件
拖入EasyUI工程下的EaseUI文件夹、EaseUIResource里面的Resource文件夹、export文件夹里面的resources文件下的EaseUIResource.bundle
3.导入 CahtDemo-UI3.0下的文件
注意:Class里面包含有AppDelegate文件,可以选择删除自己的AppDelegate文件 ,亦可以把里面的你需要代码复制到你的AppDelegate中
第一步所有的文件已导入了 , 如果你手痒可以试着运行下 ,但是肯定会报各种各样的错
第二步: 我们需要一个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 里面设置, 详细的自行百度
设置pch文件的路径
第三步,导入依赖库
现在开始导入依赖库 , 这是你会发现Linker Frameworks andLibraries里面已经有几个依赖库了 , 检查一下 , 把重复的先删了 ,如果里面同时发现了libEaseMobClientSDK.a和 EaseMobClientSDKLite.a ,就说明你第一步的步骤没完成 ,正常来说里面只有其中一个.a文件
一开始 , 我按照3.0文档的依赖库添加 , 后来报这个错误
报错
后来我核对了一下 , 发现跟文档中导入的依赖库一样啊 , 后来我就去骚扰他们的客服 ,他让我再加一个依赖库libiconv.tbd(但是官方文档根本没有提到要加入这个库,坑!)
我是直接参照Demo里面添加的依赖库添加的 , 这样比较安全一点 ,很多错误都是由于少导入某一两个依赖库造成的 , 再次检查需要耗时间 , 所以我直接全部添加
如果你遇到这个报错 , 里面带有parse twitter字眼的 ,大多数都是缺少导入parse的依赖库:
StoreKit.framework
Bolts.framework
Parse.framework
Accounts.framework
Social.framework
步骤已经说完了, 如果现在运行当然还是会遇到很多报错.
现在主要来总结一下报错原因:
如果报的错是 linkercommand failed with exit code 1 (use -v to seeinvocation)
不能只看红色报错的哪一行 , 要看看上面的内容有什么比较明显的字眼
1. 如果有报错说的是关于BackupViewController的 ,直接把文件删除就好,这个文件是没用的
1
2.如果看到报错上面开头是duplicate的 , 说明你重复导入了某些文件 ,再看看字眼里面如果有VoiceConvert, MBProgressHUD , 在全局搜索里面搜出来, 把其中的一个删掉就行了 , 一般来说我是删除EaseUI里面的VoiceConvert文件夹和三方里面的MBProgressHUD
2
3.如果你项目里面用到MJRefresh , SDWebImage什么的起冲突了 是因为环信里面也有用到这些三方 ,删掉环信的就行了
本篇集成文章由环信热心用户Scorpion_ZJ 发表在个人博客,博客地址Scorpion_ZJ