- 目录
- 引入静态库
- 用户初始化
- 参考 安全认证 ,初始化NSMutableURLRequest和parseToken
- 登录
- 在线状态变化回调
- 发送单聊消息
- 发送群聊消息
- 接收消息回调
- 注销
目录
- 引入静态库
- 用户初始化
- 登录
- 在线状态变化回调
- 发送单聊消息
- 发送群聊消息
- 接收消息回调
- 注销
引入静态库
正常情况下需要引入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];
回到顶部
