• 目录
  • 引入静态库
  • 用户初始化
    • 参考 安全认证 ,初始化NSMutableURLRequest和parseToken
  • 登录
  • 在线状态变化回调
  • 发送单聊消息
  • 发送群聊消息
  • 接收消息回调
  • 注销

    目录

    • 引入静态库
    • 用户初始化
    • 登录
    • 在线状态变化回调
    • 发送单聊消息
    • 发送群聊消息
    • 接收消息回调
    • 注销

    引入静态库

    正常情况下需要引入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];

    回到顶部