环境
- 因为IM中使用到了选择照片、拍照,需在
Info.plist
中添加Privacy - Camera Usage Description
、Privacy - Photo Library Usage Description
集成
CocoaPods集成
- IM SDK + UI(推荐)
pod 'FGChatKit-UI'
- IM SDK,无聊天会话页面,需自己实现(不推荐,集成成本较高)
pod 'FGChatKit-pod'
使用
这里的使用教程按您使用的
FGChatKit-UI
来讲述。
引入头文件
#import <FGChatKit/FGChatKit.h>
启动
在你登录自己服务器成功后拿到数据后启动FGChatKit
,该登录方法和end
(结束)方法是成对使用的。
/**
* 启动
* @param idMark 站点编号标记
* @param callBlock 回调
*/
- (void)start:(NSString *)idMark
callBlock:(FGChatKitCommonCallBlock)callBlock;
例如:
[[FGChatKit sharedKit] start:@"你的idMark"
callBlock:^(NSInteger code, NSString *msg, id data) {
NSLog(@"登录%@ code:%ld msg:%@", code == 200 ? @"成功" : @"失败", code, msg);
}];
错误码:
code | 备注 |
---|---|
200 | 启动成功 |
500 | idMark不能为空 |
501 | 服务器或网络出错 |
503 | 连接聊天服务器失败 |
504 | 登录聊天服务器失败 |
505 | 发起连接聊天服务器失败 |
其他 | 服务端返回错误提示 |
结束
/**
* 结束
*/
- (void)end;
添加/移除代理
/**
* 添加多播委托
* 多播委托:不同于常规代理回调,多个地方添加了代理都能回到回调
*/
- (void)addDelegate:(id<FGChatKitDelegate>)delegate
delegateQueue:(dispatch_queue_t)queue;
/**
* 移除多播委托
* 多播委托:不同于常规代理回调,多个地方添加了代理都能回到回调
*/
- (void)removeDelegate:(id<FGChatKitDelegate>)delegate;
多播委托
不同于常用delegate
的一对一回调,他可以实现一对多的回调。就是在多个类添加监听都能收到回调。
FGChatKitDelegate说明
/**
* 收到进入房间邀请
* 收到此回调打开会话页面
*/
- (void)chatKitDidReceiveEnterRoomInvitation:(NSString *)roomId;
/**
* 加入房间失败
* @param code 错误码
* @param msg 错误信息
*/
- (void)chatKitEnterRoomFailure:(NSInteger)code msg:(NSString *)msg;
/**
* 登录信息失效,收到此回调需重新登录SDK
*/
- (void)chatKitLoginInvalid;
/**
* 收到消息
*/
- (void)chatKitDidReceiveMessage:(FGChatMessageModel *)message;
/**
* 收到结束会话
*/
- (void)chatKitDidReceiveEndSession;
/**
* 收到消息已读回执
*/
- (void)chatKitDidReceiveReadReceipt:(NSString *)mid;
/**
* 收到撤回消息
*/
- (void)chatKitDidReceiveRevokeMessage:(NSString *)mid;
/**
* 收到排队消息回调
* @param queueNum 排队人数
*/
- (void)chatKitDidReceiveQueue:(NSInteger)queueNum;
收到进入房间邀请
回调,及chatKitDidReceiveEnterRoomInvitation:
,需代码弹出会话页面,例:/** * 收到进入房间邀请 * 收到此回调打开会话页面 */ - (void)chatKitDidReceiveEnterRoomInvitation:(NSString *)roomId { FGVisitorMessagesViewController *vc = [[FGVisitorMessagesViewController alloc] init]; vc.title = [FGChatKit sharedKit].selectedTopicsModel.topicName; vc.conversationId = [FGChatKit sharedKit].roomId; [self.navigationController pushViewController:vc animated:YES]; }
收到结束会话
回调,及chatKitDidReceiveEndSession
,需代码退出会话页面,例:/** * 收到结束会话 */ - (void)chatKitDidReceiveEndSession { [self.navigationController popViewControllerAnimated:YES]; }
进入会话
其他说明
属性
/// 模板数据
@property (nonatomic, strong, readonly) NSDictionary *templateData;
/// 是否测试环境,默认NO(注:该属性一般不设置)
@property (nonatomic, assign) BOOL isTest;
/// 主题列表
@property (nonatomic, strong, readonly) NSArray<FGTopicsModel *> *topicsModels;
/// 选中的主题
@property (nonatomic, strong, readonly) FGTopicsModel *selectedTopicsModel;
/// 房间id
@property (nonatomic, copy, readonly) NSString *roomId;
/// 站点id
@property (nonatomic, strong, readonly) NSNumber *websiteId;
/// 聊天中自己的id
@property (nonatomic, copy, readonly) NSString *chatSelfId;
/// 公司id
@property (nonatomic, strong, readonly) NSNumber *companyId;
方法
/**
* 单例
*/
+ (instancetype)sharedKit;
/**
* 触发登录失效代理回调
* 注:该方法不用调用
*/
- (void)triggerLoginInvalid;
/**
* 获取离线消息(20条)
* data数据类型为NSArray<FGChatMessageModel *>
* @param roomId 房间id
* @param beginTime 开始时间(格式yyyy-MM-dd HH:mm:ss)
* @param type 1、之前 2、之后
*/
- (void)getOfflineMessage:(NSString *)roomId
beginTime:(NSString *)beginTime
type:(NSInteger)type
callBlock:(FGChatKitCommonCallBlock)callBlock;
/**
* 获取单个模板json字符串
* @param tempType 模板类型
* @param tempId 模板id
*/
- (NSString *)singleTemplateJsonStr:(FGTemplateType)tempType
tempId:(NSNumber *)tempId;
/**
* 查询访客是否在黑名单
* data数据类型为JSON对象
*/
- (void)getIsVisitorBlack:(FGChatKitCommonCallBlock)callBlock;
/**
* 获取座席信息
* data数据类型为JSON对象
*/
- (void)getSeatInfo:(FGChatKitCommonCallBlock)callBlock;
/**
* 发送消息
*/
- (void)sendMessage:(FGChatMessageModel *)messageModel
callBlock:(FGChatKitCommonCallBlock)callBlock;
/**
* 发送单条回执
* @param mid 消息id
* @param room 房间号
*/
- (void)messageReceipt:(NSString *)mid
room:(NSString *)room
callBlock:(FGChatKitCommonCallBlock)callBlock;
/**
* 发送整个房间消息回执
* @param room 房间号
*/
- (void)roomMessageReceipt:(NSString *)room
callBlock:(FGChatKitCommonCallBlock)callBlock;
/**
* 撤回消息
* @param mid 消息id
* @param room 房间号
*/
- (void)revokeMessage:(NSString *)mid
room:(NSString *)room
callBlock:(FGChatKitCommonCallBlock)callBlock;
/**
* 选择主题
* @param topicsId 主题id
*/
- (void)selectTopicsForId:(NSNumber *)topicsId;
/**
* 进入房间
* 进入成功会回调<FGChatKitDelegate>中chatKitDidReceiveEnterRoomInvitation:方法
*/
- (void)enterConversation;
/**
* 上传图片
*/
- (void)uploadImage:(UIImage *)image
success:(void(^)(BOOL succeed, NSString *msg, NSString *url))success
failure:(void(^)(void))failure;
/**
* 上传文件
*/
- (void)uploadFlieData:(NSData *)fileData
fileName:(NSString *)fileName
success:(void(^)(BOOL succeed, NSString *msg, NSString *url))success
failure:(void(^)(void))failure;
/**
* 提交表单
* @param fromDict 表单数据 格式:{"CompanyName": "", ...}
*/
- (void)submitFrom:(NSDictionary *)fromDict
callBlock:(FGChatKitCommonCallBlock)callBlock;