美文网首页111
iOS-腾讯云TIM SDK发送自定义消息

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

作者: 宇玄丶 | 来源:发表于2018-02-28 17:11 被阅读549次

    废话少说,直奔正题。
    正常的发送消息无非就是发送:
    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 发送自定义消息就完成了。

    相关文章

      网友评论

      本文标题:iOS-腾讯云TIM SDK发送自定义消息

      本文链接:https://www.haomeiwen.com/subject/oakixftx.html