易维帮助台 iOS SDK SDK 下载 Demo 下载

简介

易维帮助台 iOS SDK 是服务商接入 iOS 版帮助中心的最简便方式,我们提供了在线客服、工单系统、帮助文档等模块以及多种 API,以方便您定制个性化的帮助中心并集成到您的 App 中。

在您开始使用 Ewei iOS SDK 进行开发前,请确保您已经在“易维控制台 - 设置 - 多渠道接入 - 渠道管理”中申请 SDK 接入,并获取 AppKey 和 AppSecret。开发环境:XCode9及以上、iOS8及以上


接入流程

导入静态库

下载并导入 Ewei官方SDK(相关Demo:EweiSDKDemo)。

SDK 包含 EweiSDK.framework 和 EweiSDK.bundle,以及备选的 Lame三方库文件。

其中EweiSDK.framework 和 EweiSDK.bundle,两个包都需要加入工程中。

如果当前开发工程中未加入 Lame 三方库,则也需要将 Lame三方库文件加入工程中。

添加头文件 <EweiSDK/EweiSDK.h>。



工程配置

请工程配置中的Build Settings里找到Other Linker Flags,加入“-ObjC”。

Info.plist 权限设置

由于 SDK 需要用到定位、相册、拍照、录音等设备权限,需要您在您的工程中设置相应权限,并添加合理的描述。

  • NSLocationWhenInUseUsageDescription
    将您的位置共享给其他人
  • NSPhotoLibraryUsageDescription
    将您的照片共享给其他人
  • NSCameraUsageDescription
    拍摄照片、视频共享给其他人
  • NSMicrophoneUsageDescription
    录制短音频共享给其他人
  • NSPhotoLibraryAddUsageDescription
    将图片保存到您的相册


SDK 注册及用户授权

SDK 启动注册

在 App 启动时使用 App_Key 和 App_Secret 进行注册。如果没有 App_Key 和 App_Secret 请询问您的管理员。

// 初始化SDK(请在程序启动时调用)

EHSDKManager * manager = [EHSDKManager defaultManager];


// 开启SDK Log,发布正式版本建议关闭!

[manager setLoggingEnabled:YES];


// 注册SDK,十分重要,必须调用

[manager registerWithAppKey:@"您的App_Key" appSecret:@"您的App_Secret" domain:@"您的帮助台地址 如 https://iosdemo.ewei.com"];



用户授权

在用户登录您的 App 时,调用用户授权,传入必要的用户识别参数以便您统一用户信息。

在使用 SDK 其他功能前必须先进行授权,授权成功后,可能遇到授权失效的情况,请注册通知 EHAuthorizeFailureNotification 进行监听。

/* 登录授权接口 email、mobilePhone、externID 这三个字段为全局唯一,可以作为每个用户的唯一标识符; 易维平台将利用 account 唯一匹配用户,如未匹配到,将以此为参数创建新用户;*/

// 登录用户授权

NSString * account = @"用户email / 用户手机号 / external_id";

[[EHSDKManager defaultManager] signinWithAccount:account
completion:^(BOOL succeeded) {
// 执行完毕
}];


// 注册授权失败响应通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(eweiAuthorizationFailedNotificationHandler:)
name:EHAuthorizeFailureNotification object:nil];

- (void)eweiAuthorizationFailedNotificationHandler:(NSNotification*)notification {
// 授权失败
// 需要重新调用授权
}



在线客服

调用在线客服

如您需要在您的 App 中使用易维在线客服功能,可以用 EHChatViewController 直接调用在线客服页面。

PS:为合理匹配您的UI风格,强烈建议您使用navigation push的方式。

// 调用在线客服页面

EHChatViewController * controller = [[EHChatViewController alloc] init];
[self.navigationController pushViewController:controller animated:YES];



新会话消息监听

如需要监听新消息通知,可以注册 EHNewChatMessageNotification 通知。

// 设置新消息监听

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(chatNewMessageNotificationHandler:)
name:EHNewChatMessageNotification object:nil];

- (void)chatNewMessageNotificationHandler:(NSNotification*)notification {
// 收到新消息
}



工单系统

调用提交工单

1.使用SDK原生方式在线提交工单

如您需要在您的 App 中使用易维提交工单功能,可以用 EHTicketAddController 和EHPushTicketAddController两种方式调用SDK原生在线提交工单页面。

PS:由于 EHTicketAddController 继承于 UINavigationController,仅能使用 presentViewController:animated:completion: 方法切换页面。

EHPushTicketAddController 则适用于pushViewController: animated:方法切换页面。

详情参见Demo中调用SDK自带提交工单示例

// 调用通过present方式提交工单页面

EHTicketAddController * controller = [[EHTicketAddController alloc] init];
// 设置代理,监听提交结果
controller.presentDelegate = self;
[self.navigationController presentViewController:controller animated:YES
completion:nil];


- (void)EHTicketAddControllerDidComplete:
(EHTicketAddController *)controller ticket:(EHTicket*)ticket {
// 工单提交成功
}

// 调用通过push方式提交工单页面
EHPushTicketAddController* controller = [[EHPushTicketAddController alloc] init];
// // 设置代理,监听提交结果
controller.pushDelegate = self;
[self.navigationController pushViewController:controller animated:YES];

- (void) EHPushTicketAddControllerDidComplete:
(EHPushTicketAddController*)controller ticket:(EHTicket*)ticket {
// 工单提交成功
}



2.调用接口提交工单(自定义方式)

SDK 为您提供了自定义提交工单接口的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHTicket。详细说明请查看头文件 EHHttpRequest.h以及Demo中自定义提交工单调用接口简单示例

// 获取提交工单中所有工单类型目录
[EHHttpRequest
requestAllTicketTypeInTicketsWithCompletion:^(NSArray<EHTicketType *> *result, NSError *error) {
}];
// 获取提交工单中所有服务目录及子目录
[EHHttpRequest
requestAllServiceCatalogInTicketsWithCompletion:^(NSArray<EHTicketServiceCatalog *> *result, NSError *error) {
}];
// 提交工单接口
[EHHttpRequest
requestSubmitTicketsWithSubject:(NSString *)subject
description:(NSString *)description
priority:(EHTicketPriority)priority
ticketType:(EHTicketType *)ticketType
ticketServiceCatalog:(EHTicketServiceCatalog *)ticketServiceCatalog
tags:(NSArray <EHTag*> *)tags
customFields:(NSArray *)customFields
Completion:^( EHTicket * result, NSError *error) {
}];


获取工单列表

SDK 为您提供了获取工单列表(包括:我的工单、抄送给我的工单、我所在组的工单、待评价的工单)的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHTicket。详细说明请查看头文件 EHHttpRequest.h。

// 获取我的工单列表

[EHHttpRequest requestMyTicketsWithPage:1 count:20
completion:^(NSArray<EHTicket *> * result, NSError * error) {

if (!error) {

// 请求成功

}

}];



调用工单详情

SDK 为您提供了具有完整功能的工单详情页面封装,可以用

EHTicketViewController 直接调用,并传入工单对象 EHTicket。

// 调用工单详情页面

[EHTicket * item = [self.contentArray objectAtIndex:indexPath.row];

EHTicketViewController * controller = [[EHTicketViewController alloc] init];
controller.ticket = item;
[self.navigationController pushViewController:controller animated:YES];



帮助文档及论坛帖子

获取推荐文章、帖子列表

SDK 为您提供了获取推荐文章、论坛帖子列表的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHArticle。详细说明请查看头文件

EHHttpRequest.h。

// 获取推荐文章列表

[EHHttpRequest requestRecommendedArticlesWithPage:0 count:20
completion:^(NSArray<EHArticle *> * result, NSError * error) {

if (!error) {

// 请求成功

}

}];



搜索文章、帖子

SDK 为您提供了通过关键字搜索文章、帖子的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHArticle。详细说明请查看头文件 EHHttpRequest.h。

// 通过关键字搜索文章

[EHHttpRequest requestArticlesWithSearchKeyword:@“帮助文档” page:0
count:20 completion:^(NSArray<EHArticle *> * result, NSError * error) {

if (!error) {

// 请求成功

}

}];



获取文章目录

SDK 为您提供了获取文章、论坛目录的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHArticleTopic。详细说明请查看头文件 EHHttpRequest.h。

// 获取文章目录

[EHHttpRequest requestAllArticleTopicsWithCompletion:^(NSArray<EHArticleTopic *> * result, NSError * error) {

if (!error) {

// 请求成功

}

}];



获取目录下的文章列表

SDK 为您提供了获取指定目录下文章列表的方法,可以用 EHHttpRequest 直接调用,异步获得工单对象 EHArticle。详细说明请查看头文件 EHHttpRequest.h。

// 获取目录下的文章列表

EHArticleTopic * topic = [self.contentArray objectAtIndex:indexPath.row];

[EHHttpRequest requestArticlesWithTopic:topic page:0 count:20
completion:^(NSArray<EHArticle *> * result, NSError * error) {

if (!error) {

// 请求成功

}

}];



调用文章详情

SDK 为您提供了文章详情页面封装,可以用 EHArticleDetailController 直接调用,并传入文章对象 EHArticle。

// 调用文章详情页面

EHArticle * item = [self.contentArray objectAtIndex:indexPath.row];

EHArticleDetailController * controller = [[EHArticleDetailController alloc] init];
controller.article = item;
[self.navigationController pushViewController:controller animated:YES];



UI 风格设置

导航栏风格设置

在使用 Ewei SDK 内置的页面 controller 时,都可以直接通过系统 api 对 navigation bar 风格进行设置,包括导航栏背景色、标题字体样式、左右按钮颜色等。

// 修改导航栏按钮颜色
navigationController.navigationBar.tintColor = YOUR_COLOR;

// 修改导航栏标题颜色及字体样式
navigationController.navigationBar.titleTextAttributes = YOUR_TITLE_ATT;

// 修改导航栏背景色
navigationController.navigationBar.barTintColor = YOUR_COLOR;


// 修改导航栏leftBarButtonItemt图片:
可通过替换EweiSDK.bundle里的"btn_defaultBack"图片,来自定义leftBarButtonItem图片;



内容部分颜色设置

导航以下的内容部分,无法通过系统 api 进行设置,开发者可以通过 EHStyleConfig 提供的接口进行全局设置,详情请阅读 EHStyleConfig.h 头文件中的说明。

// (界面中存在的链接元素、按钮元素、布局元素、控件元素,默认为 iOS 系统默认蓝色 key color: 0, 153, 255)
[EHStyleConfig setKeyColor:YOUR_COLOR];


注意事项

1. 若App中引入了IQKeyboardManager等键盘三方库,可能会造成SDK中键盘布局问题,请在进入对应页面时禁用(如进入在线客服页面)

// 进入在线客服页面
[IQKeyboardManager sharedManager].enable = NO;
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
EHChatViewController * controller = [[EHChatViewController alloc] init];
[self.navigationController pushViewController:controller animated:YES]




更新日志

3.1.5更新日志

1. 修复欢迎语重复的问题;

2. 逻辑优化并提升性能;

 

3.1.4更新日志(SDK_3.1.4,Demo

1. 在线客服支持排队安抚语、接通欢迎语;

2. 机器人应答,相似问题支持转人工引导;

3. 自动应答支持配置超链接;

 

3.1.3更新日志(SDK_3.1.3,Demo

1. 全面升级 会话 / 工单 界面交互,提升用户体验;

2. 支持表情键盘;

3. 适配智能机器人;

4. 会话适配客服端消息撤回;

5. 支持主题色设置;

 

3.1.2更新日志(SDK_3.1.2,Demo

1. 问题修复以及性能提升;

2. 重构并优化原生提交工单界面;

3. 开放自定义提交工单接口;

4. 工单 / 会话中的附件 ICON 根据文件类型适配;

5. 监听消息回调,排除当前用户发出的消息;

 

3.1.1更新日志(SDK_3.1.1,Demo

1. 适配并优化iOS12权限与兼容性问题;

2. 语音消息及图像处理优化;

3. 降低网络流量消耗及运行内存消耗;

 

3.1.0更新日志(SDK_3.1.0,Demo

1. 在线客服新增聊天缓存机制,开放允许开发者清空缓存;

2. 在线客服/工单详情支持发送语音,地图消息类型;

3. 工单详情 controller 工单主题支持由开发者设置;

 

3.0.0 更新日志(SDK_3.0.0,Demo

1. 全新的 SDK 业务架构;

2. 开放工单、文章等 API;

3. 在线客服、提交工单、工单详情采用原生编码,大大提高兼容性;