环信EaseUI集成错误 Unknown type name 'NSString' NSLocalizedString
环信集成本来认为很简单的,有现成的UI,照着文档直接傻瓜操作就行,没曾想聊天记录不能长时间保存,于是乎就有了这篇记录环信坑的笔记
在下载的环信的SDK时候里面会有两个包,一个完整版的,一个简洁版的,导入工程的时候只需要集成其中一个就行,如果导入两个则会报错
问题一 集成的时候定位到NSString的错误,错误如下图
解决方法:在自己工程的pch文件中添上
#ifdef __OBJC__
#endif 这两个一定要在pch文件的头部和尾部,要包括所有的pch文件的内容
问题二 定位到NSLocalizedString的错误
解决方法:在自己pct文件中添加 #define NSEaseLocalizedString(key, comment) [[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"EaseUIResource"withExtension:@"bundle"]] localizedStringForKey:(key) value:@"" table:nil]
问题三 再导入环信的时候,里面已经集成了一些常用的第三方,会与工程中的第三方冲突删除即可, 另外在resource文件中有一个plist文件,据说这个plist文件会导致上传出现错误,但没有验证,发现删除之后没报什么错误,就果断删之 如下图
上面的集成问题一般都是这些,至于使用环信的错误一般都会有错误码,可对照环信文档错误码来对照排除错误,下面说下一些关于
聊天记录在自己服务器保存的问题,上面提到环信不会长时间保存聊天记录,所以如果长时间需要保存聊天记录的话就需要咱们自己做保存,另外 环信的聊天记录都是从本地读取的,删除聊天记录也是删除本地的,至于表情则是文本(NSString类型),而且手机端和web端的表情也不一样(你会发现你发过去一个笑脸,到那边会是一个皱眉或者一个哭脸,这是逗为什么不做统一呢)
聊天记录保存 : 聊天保存的话这就需要和后台来制定自己的规则了,可以在发送信息的时候来保存,也可以后台通过方法从环信服务器导出方法,但这个导出只能导出最近三天的,而且还不能根据某个会话单独导出记录,所以这个方法并不是太好,在此我是发送信息保存的(这样保存如果一旦保存失败则会没有这条聊天记录,没发弥补)
表情不同:表情不同直接跟web端对照有哪些不同,发现大多数表情对应的寓意还是相同,就是表情不一样,这样都好办了,寓意相同就行,在SDK中有这样一个类 #import"EaseConvertToCommonEmoticonsHelper.h" 里面对应的是两个方法,直接和web端同意就行
加载服务器消息: 既然聊天记录自己保存了,肯定要加载咱们自己的聊天记录啦,这里加载的话可以首先构造消息写入本地,然后插入到本地,构建模型EaseMessageModel,保存到dataArray中,刷新UI,当然这是我的做法也会有其他的做法,如果出现标志发送失败的标记的话直接在构造消息的时候设置消息属性就行,
设置头像和昵称
- (id<IMessageModel>)messageViewController:(EaseMessageViewController *)viewController
modelForMessage:(EMMessage *)message
{
id<IMessageModel> model = nil;
model = [[EaseMessageModel alloc] initWithMessage:message];
if (model.isSender) {
自己发送 头型昵称直接设置model属性就行
}else{
别人发送
}
原文:http://blog.csdn.net/jx_zls/article/details/53982421
环信EaseUI集成错误 Unknown type name 'NSString' NSLocalizedString的更多相关文章
- 环信easeui集成:坑总结2018
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何将App用户体系的用户名和用户头像 显示于环信的easeui 2.如何 ...
- 环信easeui集成:坑总结2018(二)
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何发送视频功能 2.未完待续.. ------------------- ...
- 李洪强iOS开发之-环信03_集成 SDK 基础功能
李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...
- iOS开发——导入第三方库引起的unknown type name 'NSString'
今天加入SVProgressHUD的第三方库的时候报了24个错误( too many errors emitted, stopping now),都是 expected identifier or ' ...
- unknow Unknown type name 'NSString'
转载:geweb 今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情 ...
- Unknown type name 'NSString' 解决方案
今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情况下出现“Unkn ...
- Unknown type name 'NSString'
今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情况下出现“Unkn ...
- 由于源码使用是c\c++与oc混编导致Unknown type name 'NSString'
今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 解决方案三: 将Compile Sources As 改为 Objective-C++
- 环信SDK集成
利用环信SDK可以实现即时通讯,但在集成的过程中碰到了不少的坑. 注意 选择项目路径,这里以最新版环信demo为例 注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的And ...
随机推荐
- This is a bug I believe, and it took me 2-3 days to figure it out. Please do the following to get it working,
This is a bug I believe, and it took me 2-3 days to figure it out. Please do the following to get it ...
- iOS中文API之UITouch详解
UITouch 对象用于位置. 大小. 运动和一根手指在屏幕上为某一特定事件的力度.触摸的力度是从开始在 iOS 9 支持 3D 的触摸的设备上可用.你可以通过UIEvent对象传递给响应者对象访问. ...
- mysql zerofill 的使用
转自:http://www.jquerycn.cn/blog/mysql/ 那这个int[M]中M是什么意义喃,在定义数值型数据类型的时候,可以在关键字括号内指定整数值(如:int(M),M的最大值为 ...
- Android Toast 使用总结
本文内容 环境 演示 Toast 使用 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.3 三星 SM-G3508,Android OS ...
- Swift语言精要 - 属性
1. Stored Property eg: var number: Int = 0 2. Computed Property eg: var area : Double { get { return ...
- mssql 统计
这篇文章主要为大家按日,星期,月,季度,年统计销售额的sql语句,需要的朋友可以参考下 --按日,统计本月数据 select sum(payable_amount) as 金额,day([paymen ...
- 推荐五星级C语言学习网站
www.cprogrammingexpert.com (此网站,配合了大量动画,每一行代码,配合一副图片) 下面截取了部分的gif动画,大家可以认真看看, 相信作者花了很多心血,去制作这些动画. sc ...
- vsphere中虚机的cpu热插拔和内存热添加
Guest OS对此支持如下: Windows 2008 64-bit Datacenter Edition,它是可以兼容vSphere的hot-add或hot-plug功能的.增加RAM和增加CPU ...
- NetCore中使用DynamicExpresso、Z.Expressions、LambdaParser进行安字符串求值
例子如下: Z.Expressions从2.0开始支持了NetCore,但是收费的.其它两者免费.建议使用DynamicExpresso,免费而且速度快.LambdaParser目前支持太少. sta ...
- C++ 第一课:预处理命令
#,## # 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令 #define to_string( s ) # s 将会使编译器把以下 ...