一、概述:

1.SDK依赖库

FMDB, JSONModel, Masonry, Reachability, SocketRocket, MJRefresh, Qiniu, SDWebImage, TZImagePickerController

2.Demo包内容

类名 功能 常用方法
QMChatRoomViewController 聊天主页面
category:
TableView: 聊天布局
ChatMessage:发送消息处理
QMChatQuickFAQ:底部常见问题+排队数
//加载数据
- (void)loadDatas;
// 新消息
- (void)loadNewMessageData

Category: 1.ChatMessage: // 发送消息 - (void)sendText:(NSString )text; // 发送附件 -(void)sendFileMessageWithName:(NSString )fileName AndSize:(NSString )fileSize AndPath:(NSString )filePath; 2.QMChatQuickFAQ | | QMChatInputView | 聊天输入框 | | | QMChatFaceView | 表情面板 | - (void)touchFaceEmoji:(QMChatEmoji )emoji; 表情选择 - (void)touchFaceDeleteBtn;删除 - (void)touchFaceSendBtn;发送 | | QMChatBaseCell | 聊天父类cell | // 设置数据 - (void)setCellData:(QMChatMessage )model; //设置view - 子类集成需要调用父类(除非不使用父类公共view) - (void)setupSubviews; //默认单机事件加载-子类不使用可直接重载此方法 - (void)setupGestureRecognizer; // 单点事件 - (void)setupTapRecognizer; - (void)tapRecognizerAction; | | QMChatTextCell | 文本cell-以富文本加载 | | | QMChatImageCell | 图片cell | | | QMChatXBotBaseCell | 机器人父类cell | void(^pushWebView)(NSURL *url) 跳转webView | | QMChatXBotFLowListCell | 机器人列表可点击按钮cell | | | QMChatXBotFingerCell | 单行点赞点踩cell | | | QMChatXBotDoubleListCell | 双行文本-(含临时使用)多行点赞点踩(共三行文本) | | | QMChatXBotLevelCell | 水平滑动点击cell | | | QMChatXBotMultiRowCell | 多选cell | | | QMChatXBotQuestionGroupCell | 分组常见问题 | | | QMChatXBobtSelectButtonRowCell | 单行双行点击button类型cell | | | QMChatLogistcsInfoCell | 物流cell | | | QMChatFileCell | 附件cell | | | QMChatVideoCell | 视频 | | | QMChatAudioCell | 语音 | | | QMChatCardCell | 卡片消息 | | | QMChatRemindCell | 提醒消息 | | | QMChatCsrInviteCell | 评价消息 | | | QMChatOrderCardCell | 订单消息 | | | QMChatListCardCell | 卡片列表 | | | QMThemeManager | 主题色及显示控制类 | | | QMChatMessage | 聊天消息Model | | | QMLogistcsInfoModel | 物流消息model | | | QMLoadingHUD | 加载中 等待效果类 | | | QMChatEmojiManger | 图片表情管理类 | | | QMChatManager | 聊天管理工具 | |

2:sdk环境介绍

 Deployment: iOS>=9.0
 Xcode:12.5
类名 功能 常用方法
QMConnect 聊天操作
数据库操作
网络访问
获取七牛地址
QMClient sdk注册
设置访客信息

二、SDK功能接口

1:sdk手动集成

在七陌网站下载 MoorV7SDK。 导入SDK,将下载好的MoorV7SDK SDK添加到工程中, XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add image.png

2.项目集成

1.初始化基础组件库

1.首先获取配置及account(必要) + (void)sdkGetThemeConfig:(NSDictionary )param completion:(void (^)(id dict))completion failure:(void (^)(NSError ))failure 参数:

参数 类型 描述 备注
accessId NSString 坐席端accessId accessId为必需,为了根据您的accessId查看后台的配置主题色及acountid数据。

2.注册访客信息 - (void)initSDK:(id)delegate block:(void(^)(QMClientModel server))block; 3.注册成功后,获取emoji表情地址,不获取没有发送表情功能 + (void)sdkGetEmojiRUL:(void (^)(NSDictionary data))completion failure:(void (^)(NSDictionary *error))failure 4.加载完表情进入聊天界面QMChatRoomViewController

三、高级功能配置

1:自定义样式

自定义接口: [QMConnect sdkGetThemeConfig:@{@"accessId":k_qm_accessId} completion:^(id dict) { ​

} failure:^(NSError * err) { ​

}] ​

自定义参数类:QMThemeManager ​

2:注册代理

新消息代理 [QMConnect sdkServiceDelegate:self]; 会话状态代理 [QMConnect sdkStatusDelegate:self]; 会话链接代理 [QMConnect sdkConnectDelegate:self];

3:创建会话

[QMConnect sdkNewChat:^(NSDictionary * _Nonnull data) { ​

} failure:^(NSDictionary * _Nonnull error) { ​

}];

4:获取消息

获取历史消息: 适用于第一次进入、上拉加载更多 [QMConnect sdkGetListMsg:lastTime completion:^{ ​

} failure:^(NSError * _Nonnull error) { ​

}]; ​

获取单条消息: 适用于正常的消息聊天 [self loadNewMessageData]

更新消息id: @param message 变更之后的消息体 @param messageIds 消息id、 count = 2、 [之前的消息id, 需要更新的消息ID] - (void)updateOneMessage:(QMMessageModel )message withMessageIds:(NSArray )messageIds

5:转人工

[QMConnect sdkConvertManual:^{

   } failure:^(NSDictionary * _Nonnull reason) {

   }];

6:联想输入

[QMConnect sdkInputSuggest:text completion:^(NSDictionary * _Nonnull data) { ​

} failure:^(NSDictionary * _Nonnull reason) { ​

}];

7:文本消息

[QMConnect sendText:@"需要发送的文本"]

8:图片消息

[QMConnect sendImage:image对象]

9:语音消息

[QMConnect sendAudio:@"文件名称" duration:@"文件时长"]

10:文件消息

发送文件消息: [QMConnect sendFile:@"文件本地路径" fileName:@"文件名称" fileSize:@"文件大小" progressHander:^(float progress, NSString *messageId) { }] ​

接收文件消息: [QMConnect downloadFileWithMessage:self.message localFilePath:localPath progressHander:^(float progress) { ​

} failBlock:^(NSString * _Nonnull error) { ​

}];

11:机器人消息点赞点踩

[QMConnect sdkRobotfeedbackParam:dict completion:^(id _Nonnull dict) { ​

}];

12:横向卡片列表

数据格式: NSArray *listCards = @[
@{ @"imgUrl" : @"https://v7-fs-im.7moor.com/1100480/im/20210622144141/1624344101865/8e4883a206314d5da623e7dd4fe684b1/%E6%A0%87%E7%AD%BE.png?imageView2/2/w/200/h/200", @"showName" : @"订单查询1", @"clickText" : @"订单查询1", @"bgColor" : @"#EE6C09" }, @{ @"imgUrl" : @"https://v7-fs-im.7moor.com/1100480/im/20210622144138/1624344098217/db7c3728bee04dae9ce89f8b73042231/%E7%A4%BC%E5%93%81.png?imageView2/2/w/200/h/200", @"showName" : @"订单查询2", @"clickText" : @"订单查询2", @"bgColor" : @"#EE6C09" }, @{ @"imgUrl" : @"https://v7-fs-im.7moor.com/1100480/im/20210622144133/1624344093778/a06c300f36a345dcae5f5d74e720b9a9/%E4%BC%9A%E5%91%98%E5%8D%A1.png?imageView2/2/w/200/h/200", @"showName" : @"订单查询3", @"clickText" : @"订单查询3", @"bgColor" : @"#EE6C09" }, @{ @"imgUrl" : @"https://v7-fs-im.7moor.com/1100480/im/20210622144125/1624344085919/a6e258cdc62e4b6197faa62759d66f16/%E4%BC%98%E6%83%A0%E5%88%B8.png?imageView2/2/w/200/h/200", @"showName" : @"订单查询4", @"clickText" : @"订单查询4", @"bgColor" : @"#EE6C09" }, ];

删除卡片列表: [QMConnect sdkDeleteListCards] ​

插入卡片列表: [QMConnect sendListCard:listCards] ​

卡片消息为本地数据,插入之前需使用删除卡片列表接口,删除该类型所有卡片消息,该卡片插入数据类型为固定格式,里面的具体数据可以做增加,支持自定义,卡片点击事件发送的是clickText文本。

13:订单卡片消息

订单卡片字典数据例子: NSDictionary *dic = @{ @"orderTitle":@"订单标题", @"orderNumName":@"订单号文案", @"orderNum":@"00000000000", @"orderList":@[ @{ @"content":@"好闻娇韵诗棉花籽温和控油磨砂泡沫洁面霜125ml", @"price":@"¥9999", @"imgUrl":@"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201510%2F15%2F20151015064025_BRHAr.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1626340747&t=931ced71c20aa7f51b66496bc088f1ca", @"clickTarget":@"self | url | user", @"clickUrl":@"执行跳转的链接" } ], @"btnRightShow":@(1), @"btnRightText":@"右侧按钮", @"btnRightTarget":@"self | url | user", @"btnRightUrl":@"执行跳转的数据", @"btnLeftShow":@(1), @"btnLeftText":@"左侧按钮", @"btnLeftTarget":@"self | url | user", @"btnLeftUrl":@"执行跳转的数据" }; ​

发送订单卡片消息: [QMConnect sendOrderCard:dic]

14:满意度相关

获取满意度模板: [QMConnect sdkSatisfaction:^(NSDictionary * _Nonnull data) { ​

} failure:^(NSDictionary * _Nonnull reason) { ​

}] ​

检查满意度状态: [QMConnect sdkCheckCSRStatus:messageId sessionId:sessionId completion:^(NSDictionary * _Nonnull data) { ​

} failure:^(NSDictionary * _Nonnull reason) { ​

}] ​

提交满意度评价: [QMConnect sdkSendCSRMsg:satisfactionData completion:^ { ​

} failure:^(NSDictionary * _Nonnull reason) { ​

}]; ​

发送满意度评价感谢文案消息: [QMConnect sendCsrInviteMessage:@"感谢文案"]

15:关闭会话

[QMConnect sdkCloseChat:^{ ​

} failure:^(NSDictionary * _Nonnull reason) { ​

  }]

16:会话链接状态

用于监测socket链接状态 [QMConnect sdkGetConnectStatus] ​

使用前需先注册代理 [QMChatManager shared].connectDelegate = self;

17:会话重连

socket状态为断开时,重连socket使用 [QMConnect sdkReConnect] ​

18:文本超链接点击事件

  • (BOOL)textView:(UITextView )textView shouldInteractWithURL:(NSURL )URL inRange:(NSRange)characterRange
消息类别 类型 标识 备注
发送文本 http:// http://7moor_param= URL为 http://7moor_param= + "要发送文本"
发送文本 http:// http://7moor_param=(recogType参数)QM_recogType "http://7moor_param=(recogType参数)QM_recogType"+"要发送文本"
recogType = 4 为自定义事件
超链接 http:// http:// 不含7moor_param= http://地址
拨打电话 tel: tel: 或 tel:// tel://+号码