iOS网易云信 自定义消息的坑_未知类型消息

OK 先阅读官方文档。。。在gitHub里面。。

https://github.com/netease-im/NIM_iOS_UIKit/blob/master/Documents/nim_custom_message.md  文档有点坑。。很多细节没提

直接未知类型消息错误;

不过文档大概给出了思路:
1、model   里面 encode编码;

2、启动时候注册解析器;  (Demo已经处理了)

//注册自定义消息的解析器

    [NIMCustomObjectregisterCustomDecoder:[NTESCustomAttachmentDecodernew]];

3、解码decode

NTESCustomAttachmentDecoder类中进行解码

4、布局


OK 这里面关键四步;


为了排除其他错误, 直接拿NIMDemo 新增自定义消息  赠送礼物吧;


typedef NS_ENUM(NSInteger,NTESCustomMessageType){

    CustomMessageTypeJanKenPon  = 1,//剪子石头布

    CustomMessageTypeSnapchat   = 2,//阅后即焚

    CustomMessageTypeChartlet   = 3,//贴图表情

    CustomMessageTypeWhiteboard = 4//白板会话

    CustomMessageTypeSendGift = 5,     //赠送礼物

};



新建model  

NTESSendGiftAttachment  这里不码代码了  直接copy 猜拳model代码;


新建内容View 

NTESSessionSendGiftContentView  一样copy 猜拳View代码; 


记得model和View  里面的消息类型 要替换  CustomMessageTypeSendGift 赠送礼物嘛。。。


model里面 更改View类名

- (NSString *)cellContent:(NIMMessage *)message{

    return@"NTESSessionSendGiftContentView";

}



OK 这里面已经搞定了model  View和编码encode了


在解码decode类中两个方法  新增条件

- (id<NIMCustomAttachment>)decodeAttachment:(NSString *)content

{

。。。。。。。。


caseCustomMessageTypeSendGift:

                {

                    attachment = [[NTESSendGiftAttachmentalloc] init];

                    ((NTESSendGiftAttachment *)attachment).value = [datajsonInteger:CMValue];

                }

                    break;

}


- (BOOL)checkAttachment:(id<NIMCustomAttachment>)attachment{

else if ([attachment isKindOfClass:[NTESSendGiftAttachmentclass]]) {

        NSInteger value = [((NTESSendGiftAttachment *)attachment)value];

        check = (value >= 1 && value <=3) ? YES :NO;

    }

}


OK  搞定解码


接下来找到布局类 

NTESCellLayoutConfig

新增自定义的消息类型


- (instancetype)init

{

    if (self = [superinit])

    {

        _types@[

                   @"NTESJanKenPonAttachment",

                   @"NTESSnapchatAttachment",

                   @"NTESChartletAttachment",

                   @"NTESWhiteboardAttachment",

                   @"NTESSendGiftAttachment"

                   ];

        。。。。。

    }

    returnself;

}


最后 写调用方面调用。。。。


调用成功了  猜拳已经OK了


那么接下来  我们自行替换model 和 View即可;


最后总结自己报错原因: 最后一步布局配置 里面 NTESCellLayoutConfig  没有新增自定义的消息类型







  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值