环信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 ...
随机推荐
- linux下更改主机名方法hostname
一.永久修改修改/etc/sysconfig/network,在里面指定主机名称HOSTNAME=然后执行命令hostname 主机名这个时候可以注销一下系统,再重登录之后就行了. 或者修改/etc/ ...
- MySQL存储引擎与数据类型
1 数据存储引擎 存储引擎的概念是MySQL的一个特性,它指定了表的类型(诸如表怎样存储与索引数据.是否支持事务.外键等),表在计算机中的存储方式. 1.1 MySql支持的数据存储引擎 查看引擎信息 ...
- spring-boot 实现文件上传下载
@Controller public class FileUploadCtrl { @Value("${file.upload.dir}") private String path ...
- maven安装配置部署建项运行
http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket/1.4.1.RELEA ...
- unity3d与web网页通信
总结一下: Unity3D 中的 C# 和 JavaScript 脚本之间是可以互相访问并交互的,但是要求这些被访问和操作的 C# 和 JavaScript 组件必须放在名为 Standard Ass ...
- 递归的隐含限制——处理对象小的可以、大的不可以
最近自己编写了一个求n阶行列式的值的C程序,编译成功,并且使用了一个3阶行列式进行了测试,测试也成功了.以为这样就万事大吉了,可是后来在实际应用中调用该函数时却导致程序无法运行.注意到,实际应用中要求 ...
- gradle 配置及设置本地仓库
安装Gradle 从官方网站下载安装包,解压到目录 设置环境变量 GRADLE_HOME=D:\gradle\gradle-3.4.1 PATH=;%GRADLE_HOME%\bin 设置本地仓库目录 ...
- Linux下使用logrotate实现日志切换
运维过程中经常会发现一些 C 程序,每天会生产这样的日志: /home/admin/app_name/logs/access_log 那么天长地久,如果这个程序不会自动去轮转这个日志,那么这个日志文件 ...
- 使用Repository Creation Utility创建档案库并连接
使用Repository Creation Utility创建档案库 档案库创建方式 1. 使用Repository Creation Utility创建 1.1使用下载的RCU http://www ...
- java 如何使用多线程调用类的静态方法?
1.情景展示 静态方法内部实现:将指定内容生成图片格式的二维码: 如何通过多线程实现? 2.分析 之所以采用多线程,是为了节省时间 3.解决方案 准备工作 logo文件 将生成的文件保存在F盘te ...