自定义信令
创建信令
创建信令类需继承 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;
-
输入参数:
参数 类型 说明 content RCMessageContent 信令的内容 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
接收到的消息实体,参考 RongIMLibCore
中RCMessage