# iOS集成文档

相关限制及注意事项
1、iOS SDK新版支持 iOS8 以上版本。

2、目前发布xcode版本为XCode 12.0,建议使用新版开发

3、iOS目前仅仅支持超链接标签,其他html标签和属性均不识别

4、iOS需要申请麦克风、相机、相册权限,否则部分功能无法使用

智齿客服SDK具有以下特性

  • 在线咨询:咨询人工客服(收发图片、发送视频)、发送表情;
  • 高度自定义UI;

# 1 文档介绍

# 1.1 集成流程示意图

图片

# 1.2.文件说明

SDK包含(SobotOnline.framework和SobotOnline.bundle)、SobotDemo、和Doc相关说明文档。

文件名 说明 备注
SobotOnline.framework 智齿SDK代码库
SobotOnline.bundle SDK资源库,包含图片文件、多语言文件、颜色
SobotOnlineService.h 关键功能操作类
SobotOnlineConfig.h 功能配置类
SobotCache.h 基础框架设置类

# 2 集成方式

使用客服SDK需要加入的权限


<key>NSCameraUsageDescription</key>
  <string>发送图片需要访问相机</string>
<key>NSMicrophoneUsageDescription</key>
  <string>发送语音需要访问麦克风</string>
<key>NSPhotoLibraryUsageDescription</key>
  <string>发送图片需要访问相册</string>
  

# 2.1 手动集成

下载链接:

下载并解压iOS_OnlineSDK,添加必要文件SobotOnline.framework和SobotOnline.bundle到你的工程里。

# 2.2 CocoPods集成

集成代码,在podfile中加入:

pod 'SobotOnlineSDK', '~> 1.0.1'

如果查询不到库,请清除pod缓存:


// 搜索不到最新版本
pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
pod repo update

删除代码中的pod 文件夹,
pod cache clean 插件名
再重新 pod install

# 3.1 初始化和域名设置

【说明:appid, app_key 请联系智齿售后人员获取;如果使用token方式接入,请参考接口文档获取token

域名说明:

* 默认SaaS平台域名为:https://api.sobot.com

* 如果您是腾讯云服务,请设置为:https://ten.sobot.com

* 如果您是本地化部署,请使用自己的部署的服务域名

方式一:以appid和appkey方式初始化SDK

示例代码:


/// 初始化SDK,设置域名,获取token
/// @param appid  公司appid
/// @param appkey 商户appkey
/// @param host  可以为空,默认阿里云服务;如果需要,请设置自己的域名
+(void)initWithAppid:(NSString *) appid appkey:(NSString *) appkey host:(NSString * __nullable) host result:(void (^)(id object))resultBlock;

// lg:
[SobotOnlineService initWithAppid:@"你的appid" appkey:@"你的appkey" host:@"https://test.sobot.com" result:^(id  _Nonnull object) {
    
}];
    
    
    
    

方式二:直接以token方式初始化SDK


/// 初始化SDK,设置域名和认证token
/// @param token 认证token
/// @param host  可以为空,默认阿里云服务;如果需要,请设置自己的域名
/// @param resultBlock 返回结果
+(void)initWithToken:(NSString *) token host:(NSString * __nullable) host result:(void (^)(id object))resultBlock;
    

# 3.2 资源配置

可选,默认为以下值,可自定义资源库


//指定加载的bundle名称,默认SobotOnline
    [SobotCache shareSobotCache].sobotCacheEntity.bundleName = @"SobotOnline";
   
//指定加载的颜色文件名称,默认SobotColor
    [SobotCache shareSobotCache].sobotCacheEntity.colorTableName = @"SobotColor";
    
    

# 3.3 启动页面

# 3.3.1 普通版:

详情见Demo调用代码;

主要调用代码如下:

【注意:启动页面之前,必须调用初始化接口initWithAppid,否则将无法启动】

接口:




/// 启动客服认证页面
/// @param account 客服账户(邮箱)
/// @param loginStatus 登录状态 2:忙碌,1:在线,0默认
/// @param byController  启动的controller
+(void)startAuthWithAcount:(NSString *) account status:(int) loginStatus vc:(UIViewController *) byController result:(void (^)(id object))resultBlock;
 
        

参数:

参数名 类型 描述
account NSString 客服邮箱
status int -1为不置顶,0忙碌,1在线
resultBlock NSString 启动结果状态回调

示例代码:


#import <SobotOnline/SobotOnline.h>

[SobotOnlineService startAuthWithAcount:@"zhangxy@sobot.com" status:1 vc:self result:^(id  _Nonnull object) {
    
}];

# 3.4 接口说明:

# 3.4.1 登录

静默上线客服,登录后如果客服为在线状态,能收到实时消息监听


#import <SobotOnline/SobotOnline.h>


/// 仅登录客服,不执行页面逻辑
/// @param account 客服账户(邮箱)
/// @param loginStatus 登录状态 2:忙碌,1:在线,0使用默认值
/// @param resultBlock 登录结果
[SobotOnlineService doLoginWithAccount:@"zhangxy@sobot.com" status:1 result:^(id  _Nonnull object) {
    
}];


# 3.4.2 退出登录

离线当前客服


#import <SobotOnline/SobotOnline.h>


/// 手动离线客服
[SobotOnlineService outAdmin];

# 3.4.3 获取未读消息

获取当前未读消息总数,本地消息,重新登录会清空


#import <SobotOnline/SobotOnline.h>


/// 获取未读消息数
int num = [SobotOnlineService getUnReadNumber];

# 3.4.4 设置消息监听

代理方式和block方式可任选一个监听


#import <SobotOnline/SobotOnline.h>

// 以block方式
[SobotOnlineService setReceiveMessageBlock:^(id message, int nleft, NSDictionary *object) {
    
}];
    
// 设置代理方式
[SobotOnlineService setReceiveMessageDelegate:self];
    
    
    
    
//设置消息链接点击监听; 返回YES自己处理,内部不会再做处理
[SobotOnlineService setSobotLinkBlock:^BOOL(id object, NSString *linkUrl) {
    if([linkUrl isEqual:@"我喜欢"]){
        // do something
        return YES;
    }
    return NO;
}];

# 3.4.5 功能配置

以属性方式配置部分功能、配置颜色配置功能显影等,暂未实现 例如: 是否自动提醒


    SobotOnlineConfig *config = [SobotOnlineService getCurOnlincConfig];
    config.autoNotifaction = YES;
    [SobotOnlineService configSobotOnline:config];