聊天框架,利用环信服务,实现的单聊群聊功能,音乐分享,网页分享扩展

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

id<IemmessageBody> messageBody = [bodies firstObject];
    chatContentModel.messageBody = messageBody;
    chatContentModel.contentType = type;
    
    //普通文本消息和依靠普通文本消息扩展出来的消息类型
    GJGcmessageExtendModel *extendModel = [[GJGcmessageExtendModel alloc]initWithDictionary:msgModel.ext];
    
    switch ([messageBody messageBodyType]) {
        case eMessageBodyType_Image:
        {
            chatContentModel.contentType = GJGCChatFriendContentTypeImage;
        }
            break;
        case eMessageBodyType_Text:
        {
            NSLog(@"解析扩展内容:%@",[extendModel contentDictionary]);
            
            //普通文本消息
            if (!extendModel.isExtendMessageContent) {
                
                chatContentModel.contentType = GJGCChatFriendContentTypeText;
                
                EMTextMessageBody *textMessageBody = (EMTextMessageBody *)messageBody;
                
                if (!GJCFNSCacheGetValue(textMessageBody.text)) {
                    [GJGCChatFriendCellStyle formateSimpleTextMessage:textMessageBody.text];
                }
                chatContentModel.originTextMessage = textMessageBody.text;
                
            }
            
            //扩展消息类型
            if (extendModel.isExtendMessageContent) {
                
                chatContentModel.contentType = extendModel.chatFriendContentType;
                
                //是否支持显示的扩展消息
                if (extendModel.isSupportdisplay) {
                    
                    //进一步解析消息内容
                    switch (extendModel.chatFriendContentType) {
                        case GJGCChatFriendContentTypeGif:
                        {
                            GJGcmessageExtendContentGIFModel *gifContent = (GJGcmessageExtendContentGIFModel *)extendModel.messageContent;
                            chatContentModel.gifLocalId = gifContent.Emojicode;
                        }
                            break;
                        case GJGCChatFriendContentTypeMusicShare:
                        {
                            GJGcmessageExtendMusicShareModel  *musicContent = (GJGcmessageExtendMusicShareModel *)extendModel.messageContent;
                            chatContentModel.musicSongId = musicContent.songId;
                            chatContentModel.musicSongName = musicContent.title;
                            chatContentModel.musicSongUrl = musicContent.songUrl;
                            chatContentModel.musicSongAuthor = musicContent.author;
                        }
                            break;
                        case GJGCChatFriendContentTypeWebPage:
                        {
                            GJGcmessageExtendContentWebPageModel *webPageContent = (GJGcmessageExtendContentWebPageModel *)extendModel.messageContent;
                            chatContentModel.webPageThumbImageData = [webPageContent.thumbImageBase64 base64DecodedData];
                            chatContentModel.webPageTitle = webPageContent.title;
                            chatContentModel.webPageSumary = webPageContent.sumary;
                            chatContentModel.webPageUrl = webPageContent.url;
                            
                        }
                            break;
                        default:
                            break;
                    }
                }
                
                //如果不支持,需要将消息显示成文本消息
                if (![extendModel isSupportdisplay]) {
                    
                    chatContentModel.contentType = GJGCChatFriendContentTypeText;
                    
                    EMTextMessageBody *textMessageBody = (EMTextMessageBody *)messageBody;
                    
                    if (!GJCFNSCacheGetValue(textMessageBody.text)) {
                        [GJGCChatFriendCellStyle formateSimpleTextMessage:textMessageBody.text];
                    }
                    chatContentModel.originTextMessage = textMessageBody.text;
                }
            }
        }
            break;
        case eMessageBodyType_Command:
        {
            
        }
            break;
        case eMessageBodyType_File:
        {
            
        }
            break;
        case eMessageBodyType_Location:
        {
            
        }
            break;
        case eMessageBodyType_Video:
        {
            
        }
            break;
        case eMessageBodyType_Voice:
        {
            chatContentModel.contentType = GJGCChatFriendContentTypeAudio;
            
            EMVoiceMessageBody *voiceMessageBody = (EMVoiceMessageBody *)messageBody;
            
            chatContentModel.audioModel.localStorePath = voiceMessageBody.localPath;
            chatContentModel.audioModel.duration = voiceMessageBody.duration;
            chatContentModel.audioDuration =  [GJGCChatFriendCellStyle formateAudioDuration:GJCFStringFromInt(chatContentModel.audioModel.duration)];
        }
            break;
        default:
            break;
    }
    type = chatContentModel.contentType;
    
    //解析用户信息
    chatContentModel.headUrl = extendModel.userInfo.headThumb;
    if (chatContentModel.talkType == GJGCChatFriendTalkTypeGroup) {
        chatContentModel.senderName = [GJGCChatFriendCellStyle formateGroupChatSenderName:extendModel.userInfo.nickName];
    }

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...