环信客服SDK集成

根据需求研究了下环信的客服SDK, 这两天一直磕磕碰碰的在集成,中间遇到了几个坑,不过在咨询了下技术客服顺利的解决了(我的直接告诉我 技术客服是女的)。不过网上关于环信客服的资料很少,也许是我比较衰,遇到了一些坑吧,所以想把自己集成的流程写下来,希望可以帮助其他人。


环信客服SDK集成_第1张图片
496b4d62c88b77e97563255b4a3f6fff.jpg

首先官方文档必须要好好的看一遍,毕竟那个还是正版的,是最有权威的。
环信客服sdk集成官方文档
环信客服sdk iOS API

开始集成

步骤1 首先要下载环信提供的客服SDK 进去选择
环信客服SDK集成_第2张图片
屏幕快照 2017-09-05 上午11.05.55.png

这里遇到的坑就是


屏幕快照 2017-09-05 上午11.08.28.png

我下载商城demo 满怀欣喜的运行 结果给我报错误


环信客服SDK集成_第3张图片
屏幕快照 2017-09-04 上午10.48.20.png

我问了技术客服,技术客服说 因为项目太大所以上传github时候 给过滤了些文件 导致项目缺少文件,需要重新集成下。不过客服SDK中有相同的商城demo可以运行,如果大家想省事就可以去运行SDK中的商城demo。

步骤2 SDK下载完成后,文件结构为
环信客服SDK集成_第4张图片
屏幕快照 2017-09-05 上午11.23.13.png

官方介绍为

  • HelpDeskFramework 为客服SDK,HelpDesk.framework包含实时音视频
  • HelpDeskLite.framework不包含实时音视频
  • HelpDeskUI 为环信提供的单聊UI,可在集成的时候视情况使用
  • BaseFramework 为客服SDK依赖库,在导入HelpDeskFramework之前务必导入
2.1 把BaseFramework HelpDeskFramework HelpDeskUI这几个库复制到自己的项目中。
环信客服SDK集成_第5张图片
屏幕快照 2017-09-05 上午11.28.15.png

这里面就出现了坑2 稍后和大家说

2.2 选中当前的TARGET,向 General → Embedded Binaries 中添加以上依赖库。Linked Frameworks and Libraries 中会自动增加
环信客服SDK集成_第6张图片
屏幕快照 2017-09-05 上午11.32.09.png
2.3 向Build Settings → Linking → Other Linker Flags 中增加-ObjC(注意区分大小写)
环信客服SDK集成_第7张图片
屏幕快照 2017-09-05 上午11.38.57.png
2.4 SDK 暂时不支持bitcode,在Build Settings →Enable Bitcode 改为NO。
环信客服SDK集成_第8张图片
屏幕快照 2017-09-05 上午11.42.50.png
2.5 在工程info.plist文件中,增加隐私权限
Privacy - Photo Library Usage Description 需要访问您的相册
Privacy - Microphone Usage Description 需要访问您的麦克风
Privacy - Camera Usage Description 需要访问您的摄像机
2.5 在工程的pch文件中(没有就新建一个),添加
#ifdef __OBJC__
#import 
#import "HelpDeskUI.h"
#endif

如果不需要实时音视频就把上面的代码替换成

#ifdef __OBJC__
#import 
#import "HelpDeskUI.h"
#endif

以上集成需要的步骤就算完成了,当我特别乐呵的运行的时候,项目报错了

环信客服SDK集成_第9张图片
屏幕快照 2017-09-04 上午11.33.18.png

说我SCLoginManager这个文件没有找到,我就在项目中查找,没有。我就问了技术客服,技术客服跟我说这个文件是商城demo里面的,需要引进来。 我勒个去,我集成的是SDK 为啥还有引进另一个商城demo的文件,不过为了项目的运行我忍了,引进过来。这时候我天真的以为万事具备了。再次运行的时候


2204830-f0c118fc013fa68d.png

原来是由于环信客服SDK集成了一些常用的第三方的库,如果项目本身也存在这些第三方的库,就 会引起冲突,删除掉,然后把报错的地方修改成正常的调用即可。


环信客服SDK集成_第10张图片
u=3307292189,2868808571&fm=200&gp=0.jpg

3 关联App

3.1 先在 环信管理后台 创建应用
环信客服SDK集成_第11张图片
屏幕快照 2017-09-05 下午1.42.40.png
3.2 点击应用显示应用的信息( AppKey、Client ID、Client Secret )
环信客服SDK集成_第12张图片
屏幕快照 2017-09-05 下午1.44.20.png
3.2 在 环信管理后台 注册IM用户
环信客服SDK集成_第13张图片
屏幕快照 2017-09-05 下午1.49.40.png
环信客服SDK集成_第14张图片
屏幕快照 2017-09-05 下午1.51.25.png

点击注册然后输入用户名 密码就可以,当然也可以用代码 去注册。 在没有账号的时候,环信都会让注册,注册的信息都会在这里显示,图中里面的很长的字符串就是我用代码来注册的。

3.2 移至 环信工作台 创建APP关联 登陆进去后
环信客服SDK集成_第15张图片
屏幕快照 2017-09-05 下午1.59.43.png

当右上角红色是切换管理员模式和客服模式的按钮,管理员可以创建app关联 ,管理客服,看各种数据各种高大上的权限。 客服模式就是和客户聊天 “客官,不可以呀!”

然后在 渠道管理 - 手机App - 点击关联IM账户 (如果没有的话可以直接点击快速创建)

环信客服SDK集成_第16张图片
屏幕快照 2017-09-05 下午2.04.03.png
环信客服SDK集成_第17张图片
屏幕快照 2017-09-05 下午2.04.10.png
  • 名称 随便
  • AppKey Client secret Client ID 也是步骤3.2中的要记住的
3.3 在 环信工作台中管理员模式中进入设置 - 企业信息 记住 租户ID即可
环信客服SDK集成_第18张图片
屏幕快照 2017-09-05 下午2.12.53.png

4 代码初始化

这里我就写一点简单的初始化代码,和遇到的一点问题 其他的代码看看SDK中的demo 大家应该就懂得了。

 HOptions *option = [[HOptions alloc] init];
 option.appkey = @"***";
 option.tenantId = @"***"; // 上面让记住的租户ID
 option.apnsCertName = @"推送证书名称";  //推送证书的名称
 //Kefu SDK 初始化,初始化失败后将不能使用 SDK
 HError *initError = [[HChatClient sharedClient] initializeSDKWithOptions:option];
 if (initError) { // 初始化错误
 }
 [[HChatClient sharedClient] addDelegate:self delegateQueue:nil];

HChatClientDelegate

- (void)connectionStateDidChange:(HConnectionState)aConnectionState { //网络改变
    switch (aConnectionState) {
        case HConnectionConnected: {
            break;
        }
        case HConnectionDisconnected: {
            break;
        }
        default:
            break;
    }
}

- (void)userAccountDidRemoveFromServer {//从服务器中删除账户
    
}

- (void)userAccountDidLoginFromOtherDevice {//从别的客户端登陆账户
    [[HChatClient sharedClient] logout:YES];
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"prompta", @"Prompt") message:NSLocalizedString(@"loginAtOtherDevice", @"your login account has been in other places") delegate:self cancelButtonTitle:NSLocalizedString(@"ok", @"OK") otherButtonTitles:nil, nil];
    alertView.tag = 100;
    [alertView show];
}

写代码遇到的问题 就是我发送表情 一直显示的的是转移符 而不是表情图片,解决方法:根据官方demo调试代码 发现需要在启动的时候加入

[[HDEmotionEscape sharedInstance] setEaseEmotionEscapePattern:@"\\[[^\\[\\]]{1,3}\\]"];
[[HDEmotionEscape sharedInstance] setEaseEmotionEscapeDictionary:[HDConvertToCommonEmoticonsHelper emotionsDictionary]];

另一个就是 发送定位的时候一直定位失败 解决方法就是在info加入定位的权限

Privacy - Location When In Use Usage Description 需要访问您的地理位置

你可能感兴趣的:(环信客服SDK集成)