这两天集成环信移动客服,卡在了没有设置发送对象,这个他在文档里也没有写,因此贴出来记录一下。
首先第一步就是sdk集成和环境配置了,这个看文档就好,小白操作了:
文档地址:
第二步注册开发者账号,关联相关的appkey,这部分文档也写得很清楚,照他写的做基本是不会错的
文档地址:APP渠道集成 [环信开发文档]
第三步集成单聊界面,将sdk里面的ChatView、EaseUI、EaseUIResource.bundle、HyphenateSDK(我集成的是3.x)、Resource、emotion(兔斯基的表情包)等文件拖进去,不过他sdk里面有些文件有重名,所以需要跟着视频一起集成,视频可以看最新的那个,包含2.x到3.x等版本的集成,懒惰的人也可以直接拿我的demo使用就好。
视频地址:视频列表 - imGeek开发者社区
然后说说集成文件里面的chatView,这个文件夹里面有一个chatViewController,这个就是单聊界面,你只要在你需要跳转的地方用代码push过去就可以了,但是push前需要传递相关im账户,也就是你关联appkey时所使用的im账户(接收你发送消息的对象),代码如下:
//参数一:对应的im账户,若是群聊则改为组id
//参数二:聊天类型(个人和组)
ChatViewController*chatVC = [[ChatViewControlleralloc]initWithConversationChatter:@"alen"conversationType:EMConversationTypeChat];
chatVC.title=@"客服中心";
[self.navigationControllerpushViewController:chatVCanimated:YES];
你也可以在chatViewController里面设置更改聊天气泡,图片之类的,就在方法
viewDidLoad里面的那几个appearance属性。
然后关于拓展消息这部分,扩展消息可以发送用户配置信息,诸如手机位置等信息,他的调用被放置于EaseMessageViewController类里面,调用方法如下
- (void)sendTextMessage:(NSString*)text
可以在该方法内抒写拓展信息ext,拓展信息为字典写法,示例如下:
- (void)sendTextMessage:(NSString*)text
{
NSUserDefaults*user = [NSUserDefaultsstandardUserDefaults];
NSString*phone = [userobjectForKey:@"userId"] ==nil?@"":[userobjectForKey:@"userId"];
NSString*trueName = [userobjectForKey:@"realName"] ==nil?@"":[userobjectForKey:@"realName"];
NSString*address = [userobjectForKey:@"address"] ==nil?@"":[userobjectForKey:@"address"];
NSDictionary*ext =@{
@"weichat":@{
@"visitor":@{
@"trueName":trueName,
@"description":address,
@"phone":phone
}
}
};
[selfsendTextMessage:textwithExt:ext];
}
大致的集成就是这样了,然后一般放到项目里的话肯定会报很多莫名奇妙的错误,比如我的项目是用cordova框架进行h5与ios混编,居然报了一个block的语法错误,通篇置换才没事.
还有一个duplicatesymbol的错误,这个也很经常出现,错误发生在引用库的问题上,一般是我上面提到的EaseUI文件里面的lib文件夹,里面会有两个.a文件,删掉一个就好,这个在视频里面会讲,如果还报错误的话,就是第三方库的问题了,我的做法是直接删掉换了一个类似的,其中有个我们比较常用的 MJRefresh,这个库他本身就添加引用了,版本较老,因此我的做法是直接把自己添加的给删掉了,用它的就好。
下面放上demo地址,环信的集成体积比较大,不过后期打包软件后会自动缩水: