iOS-腾讯云TIM SDK发送自定义消息

废话少说,直奔正题。
正常的发送消息无非就是发送:
1、文字消息
2、图片消息
往往这些都无法满足产品提出的开发需求,比如:自定义消息。


发送自定义消息

就像发送一个微信红包一样。


发送出去的自定义消息

一步步分析吧:

一、首先我们需要先创建这样的一个cell。

1、在官方提供的demo中,找到展示消息的cell

展示消息的cell

所有消息类型的cell都要继承ChatBaseTableViewCell,定义好属性了,需要做UI处理。
UI处理

然后需要做赋值操作。
赋值操作

二、发送消息的时候一系列操作

1、选中要发送的自定义消息,将数据传过来,传给SDK自定义消息的方法中:

发送自定义消息

提供的demo当中,无论发送的什么消息,最后都会统一走[self sendMsg:imaMsg];这个方法。

其中[IMAMsg msgWithCustom:EIMAMSG_Custom params:dictionary];这个方法是我自己写的,感觉官方提供的demo有问题,因为这些操作不走后台,我们是跟微信端交互,跟我说,无法处理转移符,只能我处理了。(也有可能是我搞错了)

自定义消息方法

来到这个方法中:
packToSendData

这里我是这样处理的:

-  (NSData *)packToSendData {
    NSMutableDictionary *post = [NSMutableDictionary dictionary];
    [post setObject:@(_userAction) forKey:@"userAction"];
//    if (_actionParam && _actionParam.length > 0) {
//        [post setObject:_actionParam forKey:@"actionParam"];
//    }
    [post setObject:_customInfo forKey:@"actionParam"];
    
    if ([NSJSONSerialization isValidJSONObject:post]) {
        NSError *error = nil;
        //这是demo带的方法,这么上传,微信端总是带转义符,无法解析。
//        NSData *data = [NSJSONSerialization dataWithJSONObject:post options:NSJSONWritingPrettyPrinted error:&error];

        //自己写,不要完全相信demo,会坑死人。
        NSString *jsonStr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:post options:kNilOptions error:&error] encoding:NSUTF8StringEncoding];
        jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];
        jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\" withString:@""];
        NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
        
        if(error) {
            DebugLog(@"[%@] Post Json Error: %@", [self class], post);
            return nil;
        }
        DebugLog(@"CustomElemCmd content is %@", post);
        return data;
    }else {
        DebugLog(@"[%@] CustomElemCmd is not valid: %@", [self class], post);
        return nil;
    }
}

这样,TIM 发送自定义消息就完成了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,751评论 0 15
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,959评论 1 180
  • 2018年2月27日,新年上班之后的第一个星期。突然发现距离上一篇文章已经过去将近一年的时间了。 2017的总结 ...
    LiarMaiq阅读 1,274评论 0 0
  • 由于本文质量较差,所以先放友情链接:View and Window Architecture iPhone图片拉伸...
    lixiaoshuai阅读 1,521评论 0 0
  • 项目告一段落。闲下来自己看看了贝塞尔进行图形绘制,项目中没有过太多,但是看一个技术群讨论过绘图,自己在网上看了许多...
    其实你懂De阅读 3,214评论 0 0