移动应用 SDK for iOS
-
在您阅读此文档之前,我们假定您已经具备了基础的 iOS/安卓 应用开发经验,并能够理解相关基础概念.
-
请您首先把文档全部仔细阅读完毕,并下载我们的官方Demo再进行您的开发, 如还有疑问,请联系您的商务经理
一、导入飞鸽SDK
-
进入FeiGeSDK文件夹 Podfile所在文件夹,通过pod install 安装依赖库,然后打开FeiGeSDK.xcworkspace ,然后选择编译目标FeiGeSDK> Any ios Device (arm64 armv7) 进行build(Command + B)等待 build Success后操作完成
-
再选择 FeiGeSDK>ios simulators 的任意一版本(例如iphone 11)进行build (Command +B) 等待build Success后操作完成。
-
以上两个操作是为了生成真机版本和模拟器版本,然后选择打包目标 >Any ios Device (arm64 armv7)进行build(Command + B),等待build Success后,会在FeiGeSDK目录下生成一个Products文件夹,此文件夹下包含一个生成的FeiGeSDK.framework。这个过程完成会自动打开FeiGeSDK.framework所在的文件夹。
进入FeiGeKit 工程Podfile所在文件夹 通过pod install 安装依赖库。
-
进入FeiGeKit 工程Podfile所在文件夹 通过pod install 安装依赖库。
-
打开FeiGeKit.xcworkspace后 直接把FeiGeSDK.framework 库拖入进FeiGeKit工程
-
添加系统依赖库 libresolv.tbd和Foundation.framework.
二、集成SDK
如果导入SDK到你的工程没有问题,接下来的几步可以满足一般的需求
-
第一步:初始化, 参数:IdMark
//开启日志
[FeiGeConfig sharedSDKConfig].logEnable = true;
//有客户传入
[FeiGeConfig sharedSDKConfig].topic = @"temp";
//是否响铃
[FeiGeConfig sharedSDKConfig].soundEnable = true;
//IdMark
#define FeiGeActionCode @"99ca14466b844310a722b5accdc5c32b"
-
第二步:激活SDK
[[FeiGeConfig sharedSDKConfig] init:FeiGeActionCode deviceType:@"3" successBlock:^(NSDictionary * _Nonnull responseObject) {
//飞鸽SDK激活成功后 进行连接
} failBlock:^(NSError * _Nonnull error) {
//激活失败 激活失败后可以进入留言页面
LeaveMessageViewController * leaveMessageVc = [[LeaveMessageViewController alloc] init];
[self.navigationController pushViewController:leaveMessageVc animated:YES];
}];
-
第三步:上传设备信息
飞鸽SDK激活成功后 会在SDK里上传设备信息
-
第三步:跳转到聊天界面(button的点击方法)
飞鸽SDK激活成功后,进行IM连接 这里需要配置IM连接地址和端口
//im连接地址
#define FeiGeHost @"47.102.46.124"
//im 连接端口
#define FeiGeHostPort 5222
[[FeiGeIMManager sharedMannager] connect:FeiGeHost withPort:FeiGeHostPort withSuccess:^(feigeConnectStatus state) {
这里根据不通的状态进行相应的操作
//开始连接
feigeConnectingState
//连接成功
feigeConnectingState
//登录成功
feigeConnectedLoginSucessState
//上线成功
feigeOnLineSucessState
//上线失败
feigeOnLineFailState
//上线失败
feigeJoinQueueSucessState
//加入队列失败 跳转留言页面
feigeJoinQueueFailState
LeaveMessageViewController * leaveMessageVc = [[LeaveMessageViewController alloc] init];
[self.navigationController pushViewController:leaveMessageVc animated:YES];
//加入房间成功
feigeJoinRoomSucessState
FeiGeChatViewController * vc = [[FeiGeChatViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
//连接失败
feigeConnectFailState
} withFailure:^(NSDictionary * _Nonnull error) {
}];
-
觉得demo的页面太丑,想自定义,采用下面的方法修改配置
页面返回按钮
EBaseViewController基类中
//导航栏返回按钮
-(void)setNavLeftButton{
self.gk_backImage= [UIImage imageNamed:@"e_Back_Icon"];
self.gk_navBackgroundColor = [UIColor whiteColor];
self.gk_navLineHidden =YES;
}
-
页面背景色
EBaseViewController基类中
self.view.backgroundColor = EColorFromRGBA(0xF8F8F8, 1);
-
左边气泡颜色
FeiGeChatMessageCell
_bubbleImageView.backgroundColor = EColorFromRGBA(0x0091FF, 1);
-
右边气泡颜色
FeiGeChatMessageCell
_bubbleImageView.backgroundColor = EColorFromRGBA(0xFFFFFF, 1);
-
头像框形状
_avatarImageView = [[UIImageView alloc] init];
_avatarImageView.layer.masksToBounds = YES;
_avatarImageView.layer.cornerRadius = 20;
[self.contentView addSubview:_avatarImageView];
三、接口介绍
初始化SDK,所有操作都必须在初始化SDK,并且飞鸽服务端返回可用的*****后才能正常执行
开发者在飞鸽客户端添加站点后,可以获取到一个可用的IdMark。在*****的系统回调中调用*****初始化SDK接口:
-
/**
* @brief 获取站点配置
* @param idMark 站点标记
* @param deviceType 终端类型(1、电脑浏览器 2、电脑App 3、移动端)
* @param successBlock 请求成功回调
* @param failBlock 请求失败回调
*/
-(void)init:(NSString*)idMark deviceType:(NSString*)deviceType
successBlock:(FGResponseSuccessBlock)successBlock
failBlock:(FGResponseFailBlock)failBlock;
-
/**
* @brief im连接
* @param host 登录地址
* @param port 登录端口
* @param successblock 登录成功回调
* @param failureblock 登录失败回调
*/
- (void)connect:(NSString*)host withPort:(UInt16)port
withSuccess:(SuccessBlock)successblock
withFailure:(FailureBlock)failureblock;
四、如果您不知道IdMark,请使用管理员账号登录飞鸽,在【设置】->【接入设置】->【网站接入】菜单中,点击立即接入查看IdMark
五、发送消息
-
开发者调用此接口来发送文字消息
/**
* @brief 消息发送
* @param message 消息体
*/
- (void)sendMessage:(FeiGeMessage*)message;
//调用sdk 发送消息
FeiGeMessage * gMessage = [[FeiGeMessage alloc] init];
gMessage.message = @"消息内容";
gMessage.messageId = @"消息id";
gMessage.messageStatus = @"visitor";
gMessage.timestmp = @"时间戳";
gMessage.messageType = EMessageTypeText; //文本消息类型
[[FeiGeIMManager sharedMannager] sendMessage:gMessage];
-
开发者调用此接口来发送图片消息
/**
* @brief 消息发送
* @param message 消息体
*/
- (void)sendMessage:(FeiGeMessage*)message;
//调用sdk 发送消息
//调用sdk 发送消息
FeiGeMessage * message = [[FeiGeMessage alloc] init];
message.messageId = @"消息id";
message.messageType = EMessageTypeImage;//图片消息类型
message.fileData = imageData;
message.fileType = imageType;
message.messageStatus = @"visitor";
message.timestmp = @"时间戳";
[[FeiGeIMManager sharedMannager] sendMessage:message];
-
开发者调用此接口来发送文件消息
/**
* @brief 消息发送
* @param message 消息体
*/
- (void)sendMessage:(FeiGeMessage*)message;
//调用sdk 发送消息
FeiGeMessage * message = [[FeiGeMessage alloc] init];
message.fileName = fileName;
message.messageId = @"消息id";
message.messageType = EMessageTypeFile;//文件消息类型
message.fileData = fileData;
message.messageStatus = @"visitor";
message.timestmp = @"时间戳";
[[FeiGeIMManager sharedMannager] sendMessage:message];
六、获取未读消息
-
开发者使用此接口来统一获取所有的未读消息,用户可以在需要显示未读消息数是调用此接口,此接口会自动判断并合并本地和服务器上的未读消息
在聊天页面设置代理
[[FeiGeIMManager sharedMannager] addDelegate:self];
实现下面代理函数
//消息接受成功
-(void)didReceiveMessage:(FeiGeMessage *)message;
FeiGeMessage 消息类里有已读和未读标识
//消息是否已读
@property (nonatomic, assign) BOOL unread;
/**
* @brief 设置消息已读 未读
*/
-(void)deliverMessage;
七、获取未读消息
开发者可以使用此接口来获取 iOS SDK 服务器历史消息。
八、接收即时消息
九、获取当前正在接待的客服信息
-
开发者可以使用此接口来获取正在接待顾客的客服信息。
通过FeiGeIMManager类来获取客服信息
//客服昵称
@property(nonatomic,copy) NSString* agentNickName;
十、设置主题
-
开发者可以在不同的业务场景设置不同的topic,将访客分配到不同的坐席组
[FeiGeConfig sharedSDKConfig].topic = @"temp";//有客户设置
topic需要与飞鸽后台设置的主题名称保持一致,并设置相应的高级分配规则
如果您不知道怎么设置主题,请使用管理员账号登录飞鸽,在【设置】->【对话设置】->【主题设置】菜单中,添加主题。
然后在【设置】->【分配规则】菜单中,添加/编辑模板->高级分配规则->添加高级条件设置主题等于*****时,分配给*****技能组。
十一、留言表单
-
当客服不在线时,访客会直接引导到留言表单进行留言
/**
* @brief 提交留言
* @param contactName 联系人姓名
* @param contactWay 联系方式
* @param content 留言内容(长度不要超过100个字)
*/
-(void)addGuestbook:(NSString*)contactName
withContactWay:(NSString*)contactWay
withContent:(NSString*)content
withSucesssuccessBlock:(FGResponseSuccessBlock)successBlock
failBlock:(FGResponseFailBlock)failBlock;
十二、添加评论
十三、名词解释
十四、常见问题
-
sdk初始化失败
SDK初始化失败 可以进行相应的提示 ,也可以给我们留言,在激活失败这里进行相应的处理
如下
[[FeiGeConfig sharedSDKConfig] init:FeiGeActionCode deviceType:@"3" successBlock:^(NSDictionary * _Nonnull responseObject) {
//飞鸽SDK激活成功后 进行连接
} failBlock:^(NSError * _Nonnull error) {
//激活失败
LeaveMessageViewController * leaveMessageVc = [[LeaveMessageViewController alloc] init];
[self.navigationController pushViewController:leaveMessageVc animated:YES];
}];
-
第三方库冲突
在飞鸽SDK里 只用到里 XMPPFramework
第三方库。用户也需要在自己的程序里引入XMPPFramework第三方库 库的冲突已经在第三方库引入的地方做里处理。
-
如何在聊天界面之外监听新消息的通知
[[FeiGeIMManager sharedMannager] addDelegate:self];
-
实现下面代理函数
//消息接受成功
-(void)didReceiveMessage:(FeiGeMessage *)message;