目录
引入静态库
正常情况下需要引入MMCSDK和ProtocolBufferSDK两个静态库,但是若你的项目中也用到了ProtocolBuffer,为避免冲突,在项目中可以不引入MIMC提供的ProtocolBufferSDK静态库。
用户初始化
参考 安全认证 ,初始化NSMutableURLRequest和parseToken
(1)创建访问AppProxyService服务的URLRequest,作为参数传入MCUser的初始化方法中,见(3):
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSMutableDictionary *dicObj = [[NSMutableDictionary alloc] init];
...
NSData *dicData = [NSJSONSerialization dataWithJSONObject:dicObj options:NSJSONWritingPrettyPrinted error:nil];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:dicData];
(2)实现协议:
/**
* @param proxyResult: AppProxyService返回结果
* @result: TokenService(MIMC)返回结果
**/
@protocol parseTokenDelegate <NSObject>
- (NSString *)parseToken:(NSData *)proxyResult;
@end
(3)创建user并初始化:
MCUser *user = [[MCUser alloc] initWithAppAccount:appAccount andRequest:request];
登录
[user login];
在线状态变化回调
/**
* @param[user]: 在线状态发生变化的用户
* @param[status]: 1 在线,0 不在线
* @param[errType]: 登录失败类型
* @param[errReason]: 登录失败原因
* @param[errDescription]: 登录失败原因描述
**/
@protocol onlineStatusDelegate <NSObject>
- (void)statusChange:(MCUser *)user status:(int)status errType:(NSString *)errType errReason:(NSString *)errReason errDescription:(NSString *)errDescription;
@end
发送单聊消息
/**
* @param[toAppAccount] NSString: 消息接收者在APP帐号系统内的帐号
* @param[msg] NSData: 开发者自定义消息体
* @param[isStore] Boolean: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储。
* @return: 客户端生成的消息ID
**/
NSString packetId = [user sendMessage:toAppAccount msg:data];
NSString packetId = [user sendMessage:toAppAccount msg:data isStore:isStore];
发送群聊消息
/**
* @param[topicId] int64_t: 接收消息的群ID
* @param[msg] NSData: 开发者自定义消息体
* @param[isStore] Boolean: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储。
* @return: 客户端生成的消息ID
**/
NSString packetId = [user sendGroupMessage:topicId msg:data];
NSString packetId = [user sendGroupMessage:topicId msg:data isStore:isStore];
接收消息回调
@protocol handleMessageDelegate <NSObject>
/**
* @param[packets]: 单聊消息集
* @note: MIMCMessage 单聊消息
* MIMCMessage.packetId: 消息ID
* MIMCMessage.sequence: 序列号
* MIMCMessage.fromAccount: 发送方帐号
* MIMCMessage.toAccount: 接收方帐号
* MIMCMessage.payload: 消息体
* MIMCMessage.timestamp: 时间戳
**/
- (void)handleMessage:(NSArray<MIMCMessage*> *)packets user:(MCUser *)user;
/**
* @param[packets]: 群聊消息集
* @note: MIMCGroupMessage 群聊消息
* MIMCGroupMessage.packetId: 消息ID
* MIMCGroupMessage.groupId: 群ID
* MIMCGroupMessage.sequence: 序列号
* MIMCGroupMessage.fromAccount: 发送方帐号
* MIMCGroupMessage.payload: 消息体
* MIMCGroupMessage.timestamp: 时间戳
**/
- (void)handleGroupMessage:(NSArray<MIMCGroupMessage*> *)packets;
/**
* @param[serverAck]: 服务器返回的serverAck对象
* serverAck.packetId: 客户端生成的消息ID
* serverAck.timestamp: 消息发送到服务器的时间(单位:ms)
* serverAck.sequence: 服务器为消息分配的递增ID,单用户空间内递增唯一,可用于去重/排序
**/
- (void)handleServerAck:(NSString *)packetId sequence:(int64_t)sequence timestamp:(int64_t)timestamp;
/**
* @param[message]: 发送超时的单聊消息
**/
- (void)handleSendMessageTimeout:(MIMCMessage *)message;
/**
* @param[groupMessage]: 发送超时的群聊消息
**/
- (void)handleSendGroupMessageTimeout:(MIMCGroupMessage *)groupMessage;
@end
注销
[user logout];