iOS逆向 微信消息界面分析

一、微信消息界面的结构

1.1 消息对应的Cell

微信消息界面对应的类名为:BaseMsgContentViewController,消息界面是采用TableView实现的,每种消息类型对应一种Cell。

文本消息:TextMessageCellView
图片消息:ImageMessageCellView
语音消息:VoiceMessageCellView
位置消息:LocationMessageView
红包消息:WCPayC2CMessageView
名片消息:ShareCardMessageCellView
链接消息:AppUrlMessageCellView
消息发送时间:ChatTimeCellView

下图为文本消息cell的结构图 :

这里写图片描述

1.2 消息对应的Model

同样的,每种消息对应的Model也是不同的,每种消息对应一种model。

文本消息:TextMessageViewModel
图片消息:ImageMessageViewModel
语音消息:VoiceMessageViewModel
位置消息:LocationMessageViewModel
红包消息:WCPayC2CMessageViewModel
名片消息:ShareCardMessageViewModel
链接消息:AppUrlMessageViewModel
消息发送时间:ChatTimeViewModel

这几种消息model都继承于BaseMessageViewModel,而BaseMessageViewModel的父类为: BaseChatViewModel。我们来看下BaseChatViewModel里面有哪些有用的信息:

@interface BaseMessageViewModel : BaseChatViewModel <IMessageNodeStatusExt>
{
    CBaseContact *m_contact;
    CMessageWrap *m_messageWrap;
    struct CGSize m_contentViewSize;
    long long m_orientation;
    NSString *m_cpKeyForChatRoomMessage;
    NSString *m_cpKeyForChatRoomDisplayName;
    _Bool m_isChatRoomMessageUnsafe;
    _Bool m_isChatRoomDisplayNameUnsafe;
    _Bool m_isSender;
    _Bool _isShowStatusView;
    _Bool _highlighted;
}

这里面有一个非常有用的对象CMessageWrap,这个对象封装了与消息有关的一些属性,我们再去探究一下CMessageWrap的头文件里面有些什么可用的信息,以下只例举几个常用的属性:

@interface CMessageWrap : MMObject
{
    NSString *m_nsFromUsr; //发送人
    NSString *m_nsToUsr; //接收人
    unsigned int m_uiMessageType; //消息类型
    NSString *m_nsContent;  //消息内容
    ......
}

猜你喜欢

转载自blog.csdn.net/u010545480/article/details/78736006