环信客服SDK接入-----(一)
来源:互联网 发布:淘宝评论违禁词有哪些 编辑:程序博客网 时间:2024/05/20 02:30
第1步:快速创建APP关联
移动客服系统的“APP关联”对应即时通讯云(IM)后台的应用。在移动客服系统创建关联后,可直接登录IM后台管理该关联对应的应用。
关于快速创建APP关联的分步骤演示,请参考:快速创建APP关联。
第2步:环境准备
开发工具:Xcode。
集成移动客服iOS SDK时,可参考“商城”demo源码和EaseUI源码。
下载地址:https://github.com/easemob/helpdeskdemo-ios
KefuSDK基于IM SDK 3.x,如同时使用环信IM功能(非音视频),需使用此文档中的初始化、登录、登出操作,不需要添加IM的SDK,其IMSDK-API正常使用。
第3步:集成基础功能
完成该步骤可以实现用户注册、登录、退出,向移动客服系统发送文本、语音、图片、文件消息功能。
准备工作
1、在工程中导入 HelpDeskSDK 和 HelpDeskUI 文件夹。两种方式:
2、向Build Settings → Linking → Other Linker Flags 中增加-ObjC.
3、向Build Phases → Link Binary With Libraries 中添加依赖库
4、SDK 不支持 bitcode,在 Build Settings → Build Options → Enable Bitcode 中设置 NO。
5、在工程info.plist文件中 增加隐私权限
6、在pch文件或全局.h文件中添加如下代码
#ifdef __OBJC__ #import "helpdesk_sdk.h" #import "HelpDeskUI.h" #endif注:如果工程中没有pch文件,需要新建一个,并在Build Settings中设置Prefix Header为该pch文件,例如:HelloiOS/PrefixHeader.pch。
8、初始化sdk
HOptions *option = [[HOptions alloc] init]; option.appkey = HXKF_APP_KEY; // 必填项,appkey获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“AppKey” option.tenantId = @"32583";// 必填项,tenantId获取地址:kefu.easemob.com,“管理员模式 > 设置 > 企业信息”页面的“租户ID” //推送证书名字 option.apnsCertName = @"your apnsCerName";//(集成离线推送必填) //Kefu SDK 初始化,初始化失败后将不能使用Kefu SDK HError *initError = [[HChatClient sharedClient] initializeSDKWithOptions:option]; if (initError) { // 初始化错误 NSLog(@"DADADSADASDSAD"); }9. 进入会话列表页面
// 进入会话页面 HDMessageViewController *chatVC = [[HDMessageViewController alloc] initWithConversationChatter:@"kefuchannelimid_750310"]; // 获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号” [self.navigationController pushViewController:chatVC animated:YES];
10.修改客服头像(一般得到客服的头像和用户名实在接收到消息的方法内获取到的,红色是经过修改的代码)
#pragma mark - public - (NSArray *)formatMessages:(NSArray *)messages{ NSMutableArray *formattedArray = [[NSMutableArray alloc] init]; if ([messages count] == 0) { return formattedArray; } for (HMessage *message in messages) { //Calculate time interval CGFloat interval = (self.messageTimeIntervalTag - message.timestamp) / 1000; if (self.messageTimeIntervalTag < 0 || interval > 60 || interval < -60) { NSDate *messageDate = [NSDate dateWithTimeIntervalInMilliSecondSince1970:(NSTimeInterval)message.timestamp]; NSString *timeStr = @""; if (_dataSource && [_dataSource respondsToSelector:@selector(messageViewController:stringForDate:)]) { timeStr = [_dataSource messageViewController:self stringForDate:messageDate]; } else{ timeStr = [messageDate formattedTime]; } [formattedArray addObject:timeStr]; self.messageTimeIntervalTag = message.timestamp; } //Construct message model id<HDIMessageModel> model = nil; //接收的消息不能设置头像 BOOL isSender = message.direction == HMessageDirectionSend; if (isSender && _dataSource && [_dataSource respondsToSelector:@selector(messageViewController:modelForMessage:)]) { model = [_dataSource messageViewController:self modelForMessage:message]; } else{ model = [[HDMessageModel alloc] initWithMessage:message]; NSDictionary *weichat = [NSDictionary dictionary]; if ([message.ext objectForKey:@"weichat"]) { weichat = [message.ext valueForKey:@"weichat"]; } NSDictionary *agent = [NSDictionary dictionary]; if ([weichat objectForKey:@"agent"]) { agent = [weichat valueForKey:@"agent"]; } if ([[agent allKeys] containsObject:@"avatar"]) { NSString *url = [agent valueForKey:@"avatar"]; if (![url isKindOfClass:[NSNull class]]) { if ([url hasPrefix:@"http"]) { model.avatarURLPath = [agent valueForKey:@"avatar"]; } else { //设置客服头像 model.avatarURLPath = [[@"https:" stringByAppendingString:[agent valueForKey:@"avatar"]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } } } model.avatarImage = [UIImage imageNamed:@"HelpDeskUIResource.bundle/user"]; model.failImageName = @"imageDownloadFail"; } if (model) { [formattedArray addObject:model]; } } return formattedArray;}
10.更改自己的头像
是在HDBaseMessageCell.m文件内进行赋值的 修改对方头像也可以在这里修改
#pragma mark - setter- (void)setModel:(id<HDIMessageModel>)model{ [super setModel:model]; if (model.avatarURLPath) { [self.avatarView sd_setImageWithURL:[NSURL URLWithString:model.avatarURLPath] placeholderImage:model.avatarImage]; } else { self.avatarView.image = model.avatarImage; } if (![model.nickname isKindOfClass:[NSNull class]]) { _nameLabel.text = model.nickname; } if (self.model.isSender) { _hasRead.hidden = YES; switch (self.model.messageStatus) { case HMessageStatusPending: { _statusButton.hidden = YES; [_activity setHidden:NO]; [_activity startAnimating]; } break; case HMessageStatusDelivering: { _statusButton.hidden = YES; [_activity setHidden:NO]; [_activity startAnimating]; } break; case HMessageStatusSuccessed: { _statusButton.hidden = YES; [_activity stopAnimating]; if (self.model.isMessageRead) { _hasRead.hidden = NO; } } break; case HMessageStatusFailed: { [_activity stopAnimating]; [_activity setHidden:YES]; _statusButton.hidden = NO; } break; default: break; } // 自己的 昵称 头像 [self.avatarView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://pic35.nipic.com/20131121/2531170_145358633000_2.jpg"]] placeholderImage:[UIImage imageNamed:@""]]; self.nameLabel.text = @"我的名字"; }else{ // 对方的昵称 头像 }}
11.进行指定客服聊天
#pragma mark - Hyphenate#pragma mark - HChatDelegate#pragma mark -- 获取客服的名字和头像- (void)messagesDidReceive:(NSArray *)aMessages { for (HMessage *message in aMessages) { //获取客服的头像和名称 NSLog(@"%@",message.ext[@"weichat"][@"agent"]); NSLog(@"头像 ----- url %@",message.ext[@"weichat"][@"agent"][@"avatar"]); NSLog(@"昵称 ----- %@",message.ext[@"weichat"][@"agent"][@"userNickname"]); self.title = message.ext[@"weichat"][@"agent"][@"userNickname"]; if ([self.conversation.conversationId isEqualToString:message.conversationId]) { [self addMessageToDataSource:message progress:nil]; } }}- (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages { for (HMessage *message in aCmdMessages) { if ([self.conversation.conversationId isEqualToString:message.conversationId]) { [self showHint:NSEaseLocalizedString(@"receiveCmd", @"receive cmd message")]; break; } }}
今天第一次接触环信客服SDK 有不足之处希望指正 联系方式QQ: 497108685
0 0
- 环信客服SDK接入-----(一)
- iOS 环信移动客服接入
- 环信 即时通讯sdk实现客服功能
- 项目接入即时聊天客服系统(环信系统)PHP后端操作
- 环信android sdk接入的过程
- 微信轻松接入QQ客服
- 佳信移动客服的接入
- Unity接入微信SDK——iOS(接入微信SDK)
- ios接入微信sdk
- ios 接入微信sdk
- 微信sdk应用消息的接入(android)
- 环信客服集成
- 环信移动客服
- 【教程】微信公众平台开发模式接入客服系统
- Unity IOS微信SDK接入
- java接入微信js-sdk
- 第三方SDK接入--微信
- Android微信SDK接入总结
- ssm框架mybatis打印sql
- 关于树的几个ensemble模型的比较(GBDT、xgBoost、lightGBM、RF)
- python重载父类的__init__方法
- 《递归递推练习》G
- C++头文件汇总
- 环信客服SDK接入-----(一)
- 博弈知识小汇(省选复习)
- 开源监控软件ganglia安装手册
- Q&A——资源管理(九)
- spring task 注解+xml的demo
- springboot启动,报jdbc连接池的错误
- 卸载安装Node.js与npm过程详解
- lintcode 451 两两交换链表中的节点
- 1047. 编程团体赛(20)-PAT乙级