跳到主要内容

自定义信令

创建信令

创建信令类需继承 RongIMLibCore 库中 RCMessageContent 类,并实现以下几个方法:

  • 示例代码:

    - (NSData *)encode {
    NSData *data = [NSJSONSerialization dataWithJSONObject:self.whiteBoardDict
    options:NSJSONWritingPrettyPrinted
    error:nil];
    return data;
    }

    - (void)decodeWithData:(NSData *)data {
    if (data) {
    self.messageDict = [NSJSONSerialization JSONObjectWithData:data
    options:NSJSONReadingMutableContainers
    error:nil];
    }
    }

    + (RCMessagePersistent)persistentFlag {
    // 必须为 MessagePersistent_STATUS 的状态消息,否则会导致消息发送失败
    return MessagePersistent_STATUS;
    }

    + (NSString *)getObjectName {
    return @"唯一的消息 Key 值";
    }

注册消息

在使用前需要注册信令类,否则无法发送和接收。

  • 示例代码:

    [[RCCoreClient sharedCoreClient] registerMessageType:自定义消息类.class];

发送消息

RCRTCRoom 中提供了发送信令的方法,发送时已经在房间内的用户可以接收到此信令。

- (RCMessage *)sendRTCMessage:(RCMessageContent *)content
success:(void (^)(long messageId))successBlock
error:(void (^)(RCErrorCode nErrorCode, long messageId))errorBlock;
  • 输入参数:

    参数类型说明
    contentRCMessageContent信令的内容
    successBlock(void (^)(long messageId))信令发送成功的回调 [messageId:消息的 ID]
    errorBlock(void (^)(RCErrorCode nErrorCode, long messageId))信令发送失败的回调 [nErrorCode:发送失败的错误码 messageId:信令的 ID]
  • 返回参数:

    类型说明
    RCMessage发送的消息实体
  • 示例代码:

    [self.room sendRTCMessage:message
    success:^(long messageId) {}
    error:^(RCErrorCode nErrorCode, long messageId) {

    }];

接收消息

实现 RCRTCRoomEventDelegate 中的如下方法后,可通过此代理方法接收信令。

- (void)didReceiveMessage:(RCMessage *)message;
  • 返回参数:

    类型说明
    RCMessage接收到的消息实体,参考 RongIMLibCoreRCMessage