123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- //
- // JXMessageObject.h
- //
- // Created by Reese on 13-8-11.
- // Copyright (c) 2013年 Reese. All rights reserved.
- // ?
- #import <Foundation/Foundation.h>
- #import "Message.pbobjc.h"
- extern NSString* current_chat_userId;
- extern NSString* current_meeting_no;
- #define kMESSAGE_FROMID @"fromId"
- #define kMESSAGE_TOID @"toId"
- #define kMESSAGE_TYPE @"type"
- #define kMESSAGE_FROM @"fromUserId"
- #define kMESSAGE_FROM_NAME @"fromUserName"
- #define kMESSAGE_TO @"toUserId"
- #define kMESSAGE_TO_NAME @"toUserName"
- #define kMESSAGE_CONTENT @"content"
- #define kMESSAGE_DATE @"timeSend"
- #define kMESSAGE_ID @"messageId"
- #define kMESSAGE_No @"messageNo"
- #define kMESSAGE_TIMESEND @"timeSend"
- #define kMESSAGE_DELETETIME @"deleteTime"
- #define kMESSAGE_TIMERECEIVE @"timeReceive"
- #define kMESSAGE_FILEDATA @"fileData"
- #define kMESSAGE_FILENAME @"fileName"
- #define kMESSAGE_LOCATION_X @"location_x"
- #define kMESSAGE_LOCATION_Y @"location_y"
- #define kMESSAGE_TIMELEN @"timeLen"
- #define kMESSAGE_ISSEND @"isSend"
- #define kMESSAGE_ISREAD @"isRead"
- #define kMESSAGE_isUpload @"isUpload"
- #define kMESSAGE_FILESIZE @"fileSize"
- #define kMESSAGE_OBJECTID @"objectId"
- #define kMESSAGE_isReadDel @"isReadDel"
- #define kMESSAGE_readTime @"readTime"
- #define kMESSAGE_readPersons @"readPersons"
- #define kMESSAGE_chatMsgHeight @"chatMsgHeight"
- #define kMESSAGE_isShowTime @"isShowTime"
- #define kMESSAGE_signature @"signature"
- #define kMESSAGE_isVerifySignatureFailed @"isVerifySignatureFailed"
- #define kMESSAGE_imWidth @"imageWidth"
- #define KMESSAGE_imHeight @"imageHeight"
- //#define kMESSAGE_isMySend @"isMySend"
- #define kMESSAGE_isReceive @"isReceive"
- //#define kMESSAGE_ @""
- #define kMESSAGE_isEncrypt @"isEncrypt"
- #define CALL_CENTER_INT 10000//系统消息
- #define FRIEND_CENTER_INT 10001//新朋友
- #define BLOG_CENTER_INT 10002//商务圈
- #define CALL_CENTER_USERID @"10000"//系统消息
- #define FRIEND_CENTER_USERID @"10001"//新朋友
- #define BLOG_CENTER_USERID @"10002"//商务圈
- #define SHIKU_TRANSFER @"1100"//支付公众号
- //多点登录多端数据同步(objectId)
- #define SYNC_LOGIN_PASSWORD @"sync_login_password" //修改密码
- #define SYNC_PAY_PASSWORD @"sync_pay_password" //首次设置支付密码
- #define SYNC_PRIVATE_SETTINGS @"sync_private_settings" //隐私设置
- #define SYNC_LABEL @"sync_label" //标签的增删改查
- // 多端登录userId
- #define PC_USERID [NSString stringWithFormat:@"%@_pc",g_myself.userId]
- #define ANDROID_USERID [NSString stringWithFormat:@"%@_android",g_myself.userId]
- #define MAC_USERID [NSString stringWithFormat:@"%@_mac",g_myself.userId]
- #define WEB_USERID [NSString stringWithFormat:@"%@_web",g_myself.userId]
- #define IOS_USERID [NSString stringWithFormat:@"%@_ios",g_myself.userId]
- #define IS_OTHER_DEVICE(obj) [@[ANDROID_USERID, PC_USERID, MAC_USERID, WEB_USERID] containsObject:obj]// 多点登陆其他设备
- #define transfer_status_yes 1 //传输成功
- #define transfer_status_ing 0 //传输中
- #define transfer_status_no -2 //传输失败
- // 消息类型
- enum kWCMessageType {
- kWCMessageTypeNone = 0,//不显示的无用类型
- kWCMessageTypeText = 1,//文本
- kWCMessageTypeImage = 2,//图片
- kWCMessageTypeVoice = 3,//语音
- kWCMessageTypeLocation=4, //位置
- kWCMessageTypeGif=5,//动画
- kWCMessageTypeTextIMG=333,//动画
- kWCMessageTypeVideo=6,//视频
- kWCMessageTypeAudio=7,//音频
- kWCMessageTypeCard=8,//名片
- kWCMessageTypeFile=9, //文件
- kWCMessageTypeRemind=10, //提醒
- kWCMessageTypeCustomFace=11, //自定义的表情消息
- kWCMessageTypeEmoji=12, // 表情包中的表情消息
- kWCMessageTypeGroupActivity=2100, // 群活动信息
- kWCMessageTypeIsRead = 26,//已读标志
- kWCMessageTypeRedPacket = 28, //发红包
- kWCMessageTypeTransfer = 29, //转账
- kWCMessageTypeSystemImage1=80, //单条图文消息
- kWCMessageTypeSystemImage2=81, //多条图文消息
- kWCMessageTypeLink = 82, //链接
- kWCMessageTypeRedPacketReceive = 83, //领红包
- kWCMessageTypeShake = 84, // 戳一戳
- kWCMessageTypeMergeRelay = 85, // 合并转发
- kWCMessageTypeRedPacketReturn = 86, // 红包退回
- kWCMessageTypeShare = 87, // 分享进即时通讯的type
- kWCMessageTypeTransferReceive = 88, //转账已被领取
- kWCMessageTypeTransferBack = 89, //转账已被退回
- kWCMessageTypePaymentOut = 90, //付款码 已付款通知
- kWCMessageTypeReceiptOut = 92, //收款码 已付款通知
- kWCMessageTypePaymentGet = 91, //付款码 已到账通知
- kWCMessageTypeReceiptGet = 93, //收款码 已到账通知
- kWCMessageTypeReply=94, //回复
- kWCMessageTypeDelMsgScreenshots=95, // 阅后即焚情况下的截屏
- kWCMessageTypeDelMsgTwoSides=96, // 删除自己和对方的聊天记录
- kWCMessageTypeOpenPaySuccess = 97, // 第三方应用调取IM支付成功通知
- kWCMessageTypeEnterpriseJob=11, //企业发布的职位信息
- kWCMessageTypePersonJob=31, //个人发布的职位信息
- kWCMessageTypeResume=12, //简历信息
- kWCMessageTypePhoneAsk=13, //问交换手机
- kWCMessageTypePhoneAnswer=14, //答交换手机
- kWCMessageTypeResumeAsk=16, //问发送简历
- kWCMessageTypeResumeAnswer=17, //答发送简历
- kWCMessageTypeExamSend=19, //发起笔试题(暂无用)
- kWCMessageTypeExamAccept=20, //接受笔试题(暂无用)
- kWCMessageTypeExamEnd=21, //做完笔试题,显示结果(暂无用)
- kWCMessageTypeAudioChatAsk = 100, //询问是否准备好语音通话
- kWCMessageTypeAudioChatReady = 101, //已准备好语音通话
- kWCMessageTypeAudioChatAccept = 102, //接受语音通话
- kWCMessageTypeAudioChatCancel = 103, //拒绝语音通话 或 取消拔号
- kWCMessageTypeAudioChatEnd = 104, //结束语音通话
- kWCMessageTypeVideoChatAsk = 110, //询问是否准备好视频通话
- kWCMessageTypeVideoChatReady = 111, //已准备好视频通话
- kWCMessageTypeVideoChatAccept = 112, //接受视频通话
- kWCMessageTypeVideoChatCancel = 113, //拒绝视频通话 或 取消拔号
- kWCMessageTypeVideoChatEnd = 114, //结束视频通话
- kWCMessageTypeAVPing = 123, // 音视频ping包
- kWCMessageTypeAVBusy = 124, // 音视频忙线中
- kWCMessageTypeVideoMeetingInvite = 115, //邀请加入视频会议
- kWCMessageTypeVideoMeetingJoin = 116, //加入视频会议
- kWCMessageTypeVideoMeetingQuit = 117, //退出视频会议
- kWCMessageTypeVideoMeetingKick = 118, //踢出视频会议
- kWCMessageTypeAudioMeetingInvite = 120, //邀请加入语音会议
- kWCMessageTypeAudioMeetingJoin = 121, //加入语音会议
- kWCMessageTypeAudioMeetingQuit = 122, //退出语音会议
- // kWCMessageTypeAudioMeetingKick = 123, //踢出语音会议
- // kWCMessageTypeAudioMeetingSetSpeaker = 124, //轮麦
- // kWCMessageTypeAudioMeetingAllSpeaker = 125, //取消轮麦
-
- kWCMessageTypeTalkInvite = 130, // 邀请进行对讲机
- kWCMessageTypeTalkJoin = 131, // 加入对讲机
- kWCMessageTypeTalkQuit = 132, // 退出对讲机
- kWCMessageTypeAudioMeetingSetSpeaker = 133, // 轮麦
- kWCMessageTypeAudioMeetingAllSpeaker = 134, // 取消轮麦
- kWCMessageTypeTalkOnline = 135, // 广播在线
- kWCMessageTypeTalkOut = 136, // 踢出对讲机
-
- kWCMessageTypeMultipleLogin = 200, // 多点登录验证在线
- kWCMessageTypeRelay = 201, // 正在输入
- kWCMessageTypeWithdraw = 202, // 消息撤回
- kWCMessageTypeSuperDelete = 203, // 彻底删除
-
- kWCMessageTypeWeiboPraise = 301, // 朋友圈点赞
- kWCMessageTypeWeiboComment = 302, // 朋友圈评论
- kWCMessageTypeWeiboCancelPraise = 303, // 朋友圈取消点赞
- kWCMessageTypeWeiboRemind = 304, // 朋友圈提醒谁看
-
- kWCMessageTypeGroupFileUpload = 401, //上传群文件
- kWCMessageTypeGroupFileDelete = 402, //删除群文件
- kWCMessageTypeGroupFileDownload = 403, //下载群文件
- kWCMessageTypeUpadtePassword = 800, //修改密码/首次设置支付密码/隐私设置/标签的增删改查
- //对好友进行备注、消息免打扰、阅后即焚、置顶聊天
- kWCMessageTypeUpadteUserInfo = 801, //编辑自己的基本资料/用户
- kWCMessageTypeUpadteGroup = 802, //群组
-
- kWCMessageTypeUpdateFriendPublicKey = 803, // 好友更换公钥通知
- KWCMessageTypeAuthLogin = 810, //授权登录
- };
- // 聊天类型
- enum kWCChatType {
-
- kWCChatTypeUnknow = 0, //无效
- kWCChatTypeChat = 1, // 单聊
- kWCChatTypeGroupChat = 2, // 群聊
- kWCChatTypeAll = 3, // 广播
- kWCChatTypeAuth = 5, // 授权登录
- kWCChatTypePing = 9, // 心跳消息
- kWCChatTypeResult = 10, // 返回结果
- kWCChatTypeReceipt = 11, // 消息回执
-
- };
- @class FMResultSet;
- @class JXImageView;
- typedef enum {
- UpdateLastSendType_Dec = -1, // 新消息数量-1
- UpdateLastSendType_None = 0, // 新消息数量不变
- UpdateLastSendType_Add = 1, // 新消息数量+1
- } UpdateLastSendType;
- @interface JXMessageObject : NSObject<NSCopying>
- //以下字段用于通讯,message里:
- @property (nonatomic,strong) NSString* messageId;//消息标识号,字符串,UUID <message>里
- @property (nonatomic,strong) NSString* fromId;//发送ID <message>里
- @property (nonatomic,strong) NSString* toId;//目标ID <message>里
- //以下字段用于通讯,Body里:
- @property (nonatomic,strong) NSNumber* type;//消息类型 <body>里
- @property (nonatomic,strong) NSString* fromUserId;//源
- @property (nonatomic,strong) NSString* fromUserName;//源
- @property (nonatomic,strong) NSString* toUserId;//目标
- @property (nonatomic,strong) NSString* shareType;// 分享类型
- @property (nonatomic,strong) NSString* toUserName;//目标
- @property (nonatomic,strong) NSString* content;//内容,或URL,或祝福语
- @property (nonatomic,strong) NSString* fileName;//文件名,发送方的本地文件名
- @property (nonatomic,strong) NSString* objectId;//对象ID,一般用来存roomJid
- @property (nonatomic,strong) NSNumber* fileSize;//文件尺寸,或红包领取状态
- @property (nonatomic,strong) NSNumber* timeLen;//录音时长,秒
- @property (nonatomic,strong) NSNumber* location_x;//位置经度,或图片宽,或视频宽
- @property (nonatomic,strong) NSNumber* location_y;//位置纬度,或图片高,或视频高
- @property (nonatomic,assign) NSNumber* isReadDel;//是否阅后即焚,0或1
- @property (nonatomic,strong) NSNumber* isEncrypt;//是否加密信息,0或1
- @property (nonatomic,strong) NSDate* timeSend;//发送的时间,发送前赋当前机器时间
- @property (nonatomic, strong) NSDate *deleteTime; // 消息过期时间
- //以下字段并不参与通讯,只是数据库变量
- @property (nonatomic,strong) NSNumber* messageNo;//序列号,数值型,保存在数据库,并不通讯
- @property (nonatomic,strong) NSNumber* isSend;//是否已送达
- @property (nonatomic,strong) NSNumber* isRead;//是否已被对方阅读
- @property (nonatomic,strong) NSNumber* isReceive;//是否下载成功
- @property (nonatomic,assign) NSNumber* isUpload;//是否上传完成
- @property (nonatomic,strong) NSDate* timeReceive;//收到回执的时间,接收后赋当前机器时间
- @property (nonatomic,strong) NSData* fileData;//文件内容,字节内容
- @property (nonatomic,strong) NSNumber* readPersons; // 已读人数
- @property (nonatomic,strong) NSDate* readTime; // 已读时间
- @property (nonatomic, strong) NSString *chatMsgHeight; // 聊天消息行高
- @property (nonatomic, assign) BOOL isNotUpdateHeight; // 是否不更新行高
- @property (nonatomic, copy) NSString *signature; // 消息验签字段
- @property (nonatomic,copy) NSNumber *isVerifySignatureFailed; // 表明是否为验签失败的消息
- //以下只是内存变量,计算赋值,不传输也不保存:
- //@property (nonatomic,strong) NSString* roomJid;//房间JId
- @property (nonatomic,getter=getIsMySend) BOOL isMySend;//是否是自己发送
- @property (nonatomic,getter=getIsGroup) BOOL isGroup;//是否群聊,发送前赋值
- @property (nonatomic,assign) BOOL isShowTime;//是否展示时间
- @property (nonatomic,assign) BOOL isDelay;//是否离线消息,单聊有意义,群聊好像都返回YES
- @property (nonatomic,assign) NSNumber* imageWidth;//聊天图片的长度
- @property (nonatomic,assign) NSNumber* imageHeight;//聊天图片的高度
- @property (nonatomic,strong) NSMutableDictionary* dictionary;
- @property (nonatomic,assign) float progress;
- @property (nonatomic,assign) int index;
- @property (nonatomic,assign) int sendCount;//未收到回执时,重发次数
- @property (nonatomic,assign) BOOL updateLastContent;//更新Friend表的最后聊天内容
- @property (nonatomic,assign) BOOL showRead;//显示已读人数
- @property (nonatomic,copy) NSString *other; // 其他的一些群设置
- @property (nonatomic, assign) int changeMySend; // 0:不改变 1: 强行改变isMySend为NO 2:强行改变isMySend为YES
- @property (nonatomic, assign) BOOL isRepeat; // 是否是重复推送的消息
- @property (nonatomic, assign) BOOL isMultipleRelay; // 是否是多点登录转发的消息
- @property (nonatomic, assign) BOOL isShowWait;
- @property (nonatomic, assign) int chatType; // 聊天类型
- @property (nonatomic, assign) int tempChat; // 聊天类型
- @property (nonatomic, assign) BOOL isShowRemind; // 单聊需显示的控制消息
- @property (nonatomic,strong) NSNumber* remindType; // 控制消息类型
- @property (nonatomic, assign) BOOL isGroupSend; //是否群发消息
- @property (nonatomic, assign) BOOL isLastGroupSend; //是否最后一条群发消息
- +(JXMessageObject*)sharedInstance;
- +(void)msgWithFriendStatus:(NSString*)userId status:(int)status;
- -(CGPoint)getLocation;
- - (JXMessageObject *)getMsgWithMsgId:(NSString *)msgId;
- - (JXMessageObject *)getMsgWithMsgId:(NSString *)msgId toUserId:(NSString *)toUserId;
- -(NSDictionary*)toDictionary;//将对象转换为字典
- -(void)fromDictionary:(NSDictionary*)p;//从字典转换为对象
- // 单聊
- - (void)fromXmlDict:(NSDictionary *)xmlDict;
- // 群聊
- -(void)fromGroupXmlDict:(NSDictionary *)xmlDict;
- //数据库增删改查
- -(BOOL)insert:(NSString*)room;
- -(BOOL)update;
- -(BOOL)delete;
- -(BOOL)deleteAll;
- -(BOOL)deleteWithFromUser:(NSString*)userId roomId:(NSString*)roomId;
- -(BOOL)doInsertMsg:(NSString*)dbName tableName:(NSString*)tableName;
- //-(BOOL)deleteMessageWithUserId:(NSString *)userId messageId:(NSString *)msgId;// 删除一条聊天记录
- //-(BOOL)findMessageWithUserId:(NSString *)userId messageId:(NSString *)msgId;
- -(BOOL)updateNewMsgsTo0;
- -(NSMutableArray*)fetchImageMessageListWithUser:(NSString *)userId;
- //获取某联系人聊天记录
- -(NSMutableArray *)fetchMessageListWithUser:(NSString *)userId byAllNum:(NSInteger)num pageCount:(int)pageCount startTime:(NSDate *)startTime;
- //获取某联系人所有聊天记录
- -(NSMutableArray*)fetchAllMessageListWithUser:(NSString *)userId;
- //获取某联系人某个type的所有聊天记录
- -(NSMutableArray*)fetchAllMessageListWithUser:(NSString *)userId withTypes:(NSArray *)types;
- // 获取某个时间段聊天记录
- - (NSMutableArray *) fetchMessageListUserId:(NSString *)userId StartTime:(NSDate *)startTime endTime:(NSDate *)endTime;
- // 搜索聊天记录
- -(NSArray <JXMessageObject *>*)fetchSearchMessageWithUserId:(NSString *)userId String:(NSString *)str;
- // 获取所有对方发的阅后即焚消息
- -(NSArray <JXMessageObject *>*)fetchDelMessageWithUserId:(NSString *)userId;
- // 根据content获取最新行
- - (int) getLineNumWithUserId:(NSString *)userId;
- //获取最近联系人
- -(NSMutableArray *)fetchRecentChatByPage:(int)pageIndex;
- -(NSMutableArray *)fetchRecentChat;
- -(NSMutableArray *)getSystemChatByPage:(int)pageIndex types:(NSString*)types;
- -(void)fromRs:(FMResultSet*)rs;
- //-(void)downloadFile:(JXImageView*)iv;//下载文件
- -(BOOL)updateIsReceive:(int)n;//更新已下载标志
- //-(BOOL)updateIsRead:(BOOL)b;//单聊更新已读标志,弃用
- -(BOOL)updateIsSend:(int)n;//更新已发送标志
- -(BOOL)updateIsRead:(NSDate *)time msgId:(NSString*)msgId;//更新已读时间
- -(void)updateIsReadWithContent;//更新已读类型消息的Content即MsgId指向的消息的已读
- -(BOOL)updateReadPersons:(NSString*)msgId;//更新群聊已读人数
- -(BOOL)updateIsUpload:(BOOL)b;
- //-(BOOL)updateFileName:(NSString*)s;//更新URL
- -(void)setMsgId;
- -(NSString*)getTypeName;
- -(NSString*)getLastContent;
- -(void)notifyNewMsg;//通知有新消息
- -(void)notifyReceipt;//通知有回执
- -(void)notifyTimeout;//通知发送失败
- -(void)notifyMyLastSend;//通知UI更新显示最新发送的那一条
- -(int)getMaxWaitTime;//获得发送等待时长
- /*
- 更新最近发送的content及新数量
- newMsgType = 1 : 数量 + 1
- newMsgType = 2 : 数量 = 0
- newMsgType = 3 : 数量 不变
- */
- -(void)updateLastSend:(UpdateLastSendType)newMsgType;
- // 更新新消息数量
- -(void)updateNewMsgCount:(int)count withUserId:(NSString *)userId;
- -(NSString*)getTableName;//获取本userId所操作的表名
- //-(void)doReceiveFriendRequest;
- -(void)doGroupFileMsg;
- -(BOOL)doNewRemindMsg;
- -(void)copy:(JXMessageObject*)p;
- -(NSString*)getContentValue:(NSString*)key;
- -(NSString*)getContentValue:(NSString*)key subKey:(NSString*)subKey;
- -(NSString*)getContentValue:(NSString*)key index:(int)i;
- -(void)sendAlreadyReadMsg;//发送“已读”消息
- -(BOOL)queryIsRead;
- -(NSTimeInterval)queryReadTime;
- // 获取已读列表
- - (NSMutableArray *)fetchReadList;
- -(BOOL)isVisible;//消息是否会显示在屏幕
- -(BOOL)isRoomControlMsg;//房间控制消息
- -(BOOL)isAudioMeetingMsg;//语音会议消息
- -(BOOL)isPinbaMsg;//是否聘吧相关消息
- -(BOOL)isAddFriendMsg;
- -(BOOL)isAtMe;
- -(void)getHistory:(NSArray*)array userId:(NSString*)userId;//获取聊天历史记录
- // 更新群昵称
- - (BOOL)updateFromUserName;
- - (BOOL)haveTheMessage;
- - (BOOL)updateFileName;
- // 更新邀请群好友验证文件名,用于判断是否已确认验证
- - (BOOL)updateNeedVerifyFileName;
- // 更新消息行高
- - (BOOL)updateChatMsgHeight;
- // 更新所有消息行高
- - (BOOL)updateAllChatMsgHeight;
- // 更新是否显示时间
- - (BOOL)updateIsShowTime;
- // 删除过期聊天记录
- - (BOOL)deleteTimeOutMsg:(NSString *)userId chatRecordTimeOut:(NSString *)ChatRecordTimeOut;
- // Message.pbobjc 转 JXMessageObject
- + (JXMessageObject *)getMsgObjWithPbobjc:(ChatMessage *)message;
- // JXMessageObject 转 Message.pbobjc
- - (ChatMessage *)getPbobjcObjWithMsg:(JXMessageObject *)msg;
- // 根据objectId获取消息
- - (NSMutableArray *)getMsgWithObjectId:(NSString *)objectId;
- - (BOOL)updateFileSize;
- @end
|