目录

引入静态库

正常情况下需要引入MMCSDK和ProtocolBufferSDK两个静态库,但是若你的项目中也用到了ProtocolBuffer,为避免冲突,在项目中可以不引入MIMC提供的ProtocolBufferSDK静态库。

用户初始化

参考 安全认证 ,初始化NSMutableURLRequest和parseToken

  1. (1)创建访问AppProxyService服务的URLRequest,作为参数传入MCUser的初始化方法中,见(3):
  2. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
  3. NSMutableDictionary *dicObj = [[NSMutableDictionary alloc] init];
  4. ...
  5. NSData *dicData = [NSJSONSerialization dataWithJSONObject:dicObj options:NSJSONWritingPrettyPrinted error:nil];
  6. [request setHTTPMethod:@"POST"];
  7. [request setHTTPBody:dicData];
  8. (2)实现协议:
  9. /**
  10. * @param proxyResult: AppProxyService返回结果
  11. * @result: TokenService(MIMC)返回结果
  12. **/
  13. @protocol parseTokenDelegate <NSObject>
  14. - (NSString *)parseToken:(NSData *)proxyResult;
  15. @end
  16. (3)创建user并初始化:
  17. MCUser *user = [[MCUser alloc] initWithAppAccount:appAccount andRequest:request];

登录

  1. [user login];

在线状态变化回调

  1. /**
  2. * @param[user]: 在线状态发生变化的用户
  3. * @param[status]: 1 在线,0 不在线
  4. * @param[errType]: 登录失败类型
  5. * @param[errReason]: 登录失败原因
  6. * @param[errDescription]: 登录失败原因描述
  7. **/
  8. @protocol onlineStatusDelegate <NSObject>
  9. - (void)statusChange:(MCUser *)user status:(int)status errType:(NSString *)errType errReason:(NSString *)errReason errDescription:(NSString *)errDescription;
  10. @end

发送单聊消息

  1. /**
  2. * @param[toAppAccount] NSString: 消息接收者在APP帐号系统内的帐号
  3. * @param[msg] NSData: 开发者自定义消息体
  4. * @param[isStore] Boolean: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储。
  5. * @return: 客户端生成的消息ID
  6. **/
  7. NSString packetId = [user sendMessage:toAppAccount msg:data];
  8. NSString packetId = [user sendMessage:toAppAccount msg:data isStore:isStore];

发送群聊消息

  1. /**
  2. * @param[topicId] int64_t: 接收消息的群ID
  3. * @param[msg] NSData: 开发者自定义消息体
  4. * @param[isStore] Boolean: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储。
  5. * @return: 客户端生成的消息ID
  6. **/
  7. NSString packetId = [user sendGroupMessage:topicId msg:data];
  8. NSString packetId = [user sendGroupMessage:topicId msg:data isStore:isStore];

接收消息回调

  1. @protocol handleMessageDelegate <NSObject>
  2. /**
  3. * @param[packets]: 单聊消息集
  4. * @note: MIMCMessage 单聊消息
  5. * MIMCMessage.packetId: 消息ID
  6. * MIMCMessage.sequence: 序列号
  7. * MIMCMessage.fromAccount: 发送方帐号
  8. * MIMCMessage.toAccount: 接收方帐号
  9. * MIMCMessage.payload: 消息体
  10. * MIMCMessage.timestamp: 时间戳
  11. **/
  12. - (void)handleMessage:(NSArray<MIMCMessage*> *)packets user:(MCUser *)user;
  13. /**
  14. * @param[packets]: 群聊消息集
  15. * @note: MIMCGroupMessage 群聊消息
  16. * MIMCGroupMessage.packetId: 消息ID
  17. * MIMCGroupMessage.groupId: 群ID
  18. * MIMCGroupMessage.sequence: 序列号
  19. * MIMCGroupMessage.fromAccount: 发送方帐号
  20. * MIMCGroupMessage.payload: 消息体
  21. * MIMCGroupMessage.timestamp: 时间戳
  22. **/
  23. - (void)handleGroupMessage:(NSArray<MIMCGroupMessage*> *)packets;
  24. /**
  25. * @param[serverAck]: 服务器返回的serverAck对象
  26. * serverAck.packetId: 客户端生成的消息ID
  27. * serverAck.timestamp: 消息发送到服务器的时间(单位:ms)
  28. * serverAck.sequence: 服务器为消息分配的递增ID,单用户空间内递增唯一,可用于去重/排序
  29. **/
  30. - (void)handleServerAck:(NSString *)packetId sequence:(int64_t)sequence timestamp:(int64_t)timestamp;
  31. /**
  32. * @param[message]: 发送超时的单聊消息
  33. **/
  34. - (void)handleSendMessageTimeout:(MIMCMessage *)message;
  35. /**
  36. * @param[groupMessage]: 发送超时的群聊消息
  37. **/
  38. - (void)handleSendGroupMessageTimeout:(MIMCGroupMessage *)groupMessage;
  39. @end

注销

  1. [user logout];

回到顶部