通过以下代码,开发者可实现自定义消息的类型及 UI 展示:
1、新建自定义消息类 “SimpleMessage.h” 文件,代码如下:
#import
#import
#define RCLocalMessageTypeIdentifier @”RC:SimpleMsg”
/**
* 文本消息类定义
*/
@interface SimpleMessage : RCMessageContent
/** 文本消息内容 */
@property(nonatomic, strong) NSString* content;
/**
* 附加信息
*/
@property(nonatomic, strong) NSString* extra;
/**
* 根据参数创建文本消息对象
* @param content 文本消息内容
*/
+(instancetype)messageWithContent:(NSString *)content;
@end
`SimpleMessage.m` 文件代码如下:
#import “SimpleMessage.h”
#import
@implementation SimpleMessage
+(instancetype)messageWithContent:(NSString *)content {
SimpleMessage *msg = [[SimpleMessage alloc] init];
if (msg) {
msg.content = content;
}
return msg;
}
+(RCMessagePersistent)persistentFlag {
return (MessagePersistent_ISPERSISTED | MessagePersistent_ISCOUNTED);
}
#pragma mark – NSCoding protocol methods
#define KEY_TXTMSG_CONTENT @”content”
#define KEY_TXTMSG_EXTRA @”extra”
– (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
self.content = [aDecoder decodeObjectForKey:KEY_TXTMSG_CONTENT];
self.extra = [aDecoder decodeObjectForKey:KEY_TXTMSG_EXTRA]; }
return self;
}
– (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.content forKey:KEY_TXTMSG_CONTENT];
[aCoder encodeObject:self.extra forKey:KEY_TXTMSG_EXTRA];
}
#pragma mark – RCMessageCoding delegate methods
-(NSData *)encode {
NSMutableDictionary *dataDict=[NSMutableDictionary dictionary];
[dataDict setObject:self.content forKey:@”content”];
if (self.extra) {
[dataDict setObject:self.extra forKey:@”extra”];
}
if (self.senderUserInfo) {
NSMutableDictionary *__dic=[[NSMutableDictionary alloc]init];
if (self.senderUserInfo.name) {
[__dic setObject:self.senderUserInfo.name forKeyedSubscript:@”name”];
}
if (self.senderUserInfo.por