即时通讯(环信) bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)
来源:互联网 发布:图解网络硬件 mobi 编辑:程序博客网 时间:2024/06/05 17:02
因在开发公司项目有即时通讯模块,经商量之后选择了第三方即时通讯sdk环信,由于3.0文档还不是非常全面,且本人之前没有过开发即时通讯的经验,查阅了很多资料,磕磕绊绊几天终于完成了对该模块的开发,故此记录所遇到的问题及解决办法,方便以后自己或朋友的查阅:
首先,对于第一次接触的朋友需要初步了解下环信,官方文档非常详尽的介绍了,在此就不赘述.附上官方文档链接:http://docs.easemob.com/doku.php?id=im:start
1.先直接根据官方文档集成SDK,在集成之前如果是第一次接触环信,建议备份工程.
注:官方下载的包里会有两个静态库,一个是包含实时语音的库,另一个则不包含,根据业务需求,记得删除掉一个库,直接move to trash就可以.切记要删除!否则在后边的步骤会报重复引用链接错误.
2.根据官方文档导入依赖库的时候,dylib后缀没有的直接用tbd就可以(Xcode 7之后改为tbd).
加入系统SDK依赖库:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
SystemConfiguration.framework
libc++.a
libresolv.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib
libHyphenateSDK.a
如果报错:"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o),则另外要加入libiconv.tbd依赖库.
官方依赖库导入之后编译,此处编译会遇到的坑:
1).报重复引用静态库错误(没删官方两个静态库中的一个)
2).报与-all_load 冲突错误 根据文档改为-ObjC即可 如果改为-ObjC还有错 可按照文档改为 -force_load
注:项目如果用了友盟分享,改为-force_load之后 会与友盟有冲突,具体原因也不清楚,项目直接crash在分享新浪微博,此处求解惑. 改为-ObjC即可
到此步骤直到编译没错的时候就说明导入SDK 配环境成功.
3.环信官方提供了easeUI这个快速集成单聊界面,在集成easeUI之前建议不要用cocoapods来集成,因为会报一些莫名的错误.
集成easeUI:
1).将EaseUI工程下载下来之后,直接拖入EaseUI文件夹,EaseUIResource里面的Resource文件夹,export文件夹里的resource文件夹下的EaseUIResource.bundle 包,到工程中.
2).新建一个pch文件,设置好路径之后,在pch文件中添加引用:EaseUI-Prefix.pch 、ChatDemo-UI3.0-Prefix.pch 这两个pch中的代码.
此时编译会报一个 NSObject + EaseMob类别错误 (该类别是2.0demo中的,根本没有用) 可以选择注释,或者直接删除该类别.将该类别注释掉之后,如果报更多的错误,错误定在NSString或其他系统类上,在你新建的pch文件里,你所包含的头文件开始加上: #ifdef __OBJC__ 结尾处加上: #endif 如下图:
450A4D8A-1D3D-463A-8012-D75920068558.png此时编译如果还报错并且错误定在NSLocalizedString, 在你的pch文件里添上如下宏:
#define NSEaseLocalizedString(key, comment) [[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"EaseUIResource"withExtension:@"bundle"]] localizedStringForKey:(key) value:@"" table:nil]
3).下载官方提供的ChatDemo-3.0 拖入demo中3rdparty文件夹,因EaseUI本身集成了几个常用三方库,因此会与工程中你所用的重复,此时编译会报错.本身所包含的常用三方如下:MBProgressHUD、VoiceConvert、MJRefresh、SDWebImage. 如果有冲突,切记删除ChatDemo中的三方库,然后改掉相关报错的代码.
此时编译如果还报错,错误为Setting文件夹下的BackUp类,直接删除掉或注释即可,该类用处不大.
至此,编译成功则EaseUI的集成也完毕了.
环信的EaseUI其实只是做到一个展示的作用,包括一些控件的布局,排版都没有处理,因此我们可以直接用ChatDemo3.0中的ChatViewController这个界面,附上集成视频地址:http://v.youku.com/v_show/id_XMTQxOTgyNjU1Mg==.html?from=y1.2-1-87.3.6-2.1-1-1-5-0
好了,到此当你把ChatViewController也集成完毕,一个初步成型的单聊界面就出来了.ps:环信支持非好友之间的聊天,你只要知道对方的环信id即可.
那么你会疑问了,头像和昵称还没有搞定.因为环信服务器不存储用户的头像和昵称,因此需要你与自己app的服务器交互,聊天界面的头像和昵称在如下方法中修改:
- (id<IMessageModel>)messageViewController:(EaseMessageViewController *)viewController
modelForMessage:(EMMessage *)message
如果因业务需求用到会话列表,官方并没有非常完善的文档,可以参考demo中的ConversationListViewController.
- 即时通讯(环信) bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)
- XMPP导入xcode提示错误:"_iconv", referenced from: _mem_cd_iconv in libidn.a(striconv.o)
- "_iconv", referenced from:
- "_iconv", referenced from: 的解决方法
- "_fwrite$UNIX2003", referenced from: _hex_dump_internal in libEaseMobClientSDK.a(dump.o)
- 即时通讯(环信) bug
- xxx referenced from: xxx in xxx.o
- "_stringprep", referenced from:+[LibIDN prepNode:] in LibIDN.o
- "_ABAddressBookCreate", referenced from: -[IFlyContact contact] in iflyMSC(IFlyContact.o)
- "_ABAddressBookCreate", referenced from: -[IFlyContact contact] in iflyMSC(IFlyContact.o)
- 即时通讯(环信)-bug Implicit declaration of function 'NSEaseLocalizedString' is invalid in C99
- Undefined symbols for architecture x86_64:“_glutInit”, referenced from:_main in main.o / Netbeans on
- 从svn下载工程出现"_OBJC_CLASS_$_", referenced from: objc-class-ref in MRAppDelegate.o错误
- error:"_OBJC_CLASS_$_MBProgressHUD", referenced from: objc-class-ref in ViewController.o
- "typeinfo for XXX::xxx", referenced from:typeinfo for xxx::xxx > in xx.o
- error:"_OBJC_CLASS_$_XXX", referenced from: objc-class-ref in XXX.o
- Could not load the "logo.png" image referenced from a nib in the bundle with identifier
- Could not load the "" image referenced from a nib in the bundle with identifier XXXXX
- Android官方开发文档Training系列课程中文版:调用相机之简单摄像
- 一个int数的二进制有多少个一
- 根据不同条件插入不同表SQL
- 实现点击图片的放大缩小
- dentry 和inode整理
- 即时通讯(环信) bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)
- 19. Remove Nth Node From End of List
- 多媒体
- 无法体会如何
- ORACLE 表空间查询及操作方法
- 调整设备时间导致的Provision过期
- jquery ajax提交表单
- 笔试题30. LeetCode OJ (17)
- 关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解