NIMMessage.h
6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
//
// NIMMessage.h
// NIMLib
//
// Created by Netease.
// Copyright (c) 2015年 Netease. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "NIMGlobalDefs.h"
#import "NIMSession.h"
#import "NIMLoginClient.h"
#import "NIMImageObject.h"
#import "NIMLocationObject.h"
#import "NIMAudioObject.h"
#import "NIMCustomObject.h"
#import "NIMVideoObject.h"
#import "NIMFileObject.h"
#import "NIMNotificationObject.h"
#import "NIMTipObject.h"
#import "NIMRobotObject.h"
#import "NIMMessageSetting.h"
#import "NIMMessageReceipt.h"
#import "NIMAntiSpamOption.h"
#import "NIMMessageApnsMemberOption.h"
NS_ASSUME_NONNULL_BEGIN
@class NIMMessageChatroomExtension;
/**
* 消息送达状态枚举
*/
typedef NS_ENUM(NSInteger, NIMMessageDeliveryState){
/**
* 消息发送失败
*/
NIMMessageDeliveryStateFailed,
/**
* 消息发送中
*/
NIMMessageDeliveryStateDelivering,
/**
* 消息发送成功
*/
NIMMessageDeliveryStateDeliveried
};
/**
* 消息附件下载状态
*/
typedef NS_ENUM(NSInteger, NIMMessageAttachmentDownloadState){
/**
* 附件需要进行下载 (有附件但并没有下载过)
*/
NIMMessageAttachmentDownloadStateNeedDownload,
/**
* 附件收取失败 (尝试下载过一次并失败)
*/
NIMMessageAttachmentDownloadStateFailed,
/**
* 附件下载中
*/
NIMMessageAttachmentDownloadStateDownloading,
/**
* 附件下载成功/无附件
*/
NIMMessageAttachmentDownloadStateDownloaded
};
/**
* 消息结构
*/
@interface NIMMessage : NSObject
/**
* 消息类型
*/
@property (nonatomic,assign,readonly) NIMMessageType messageType;
/**
* 消息来源
*/
@property (nullable,nonatomic,copy) NSString *from;
/**
* 消息所属会话
*/
@property (nullable,nonatomic,copy,readonly) NIMSession *session;
/**
* 消息ID,唯一标识
*/
@property (nonatomic,copy,readonly) NSString *messageId;
/**
* 消息文本
* @discussion 消息中除 NIMMessageTypeText 和 NIMMessageTypeTip 外,其他消息 text 字段都为 nil
*/
@property (nullable,nonatomic,copy) NSString *text;
/**
* 消息附件内容
*/
@property (nullable,nonatomic,strong) id<NIMMessageObject> messageObject;
/**
* 消息设置
* @discussion 可以通过这个字段制定当前消息的各种设置,如是否需要计入未读,是否需要多端同步等
*/
@property (nullable,nonatomic,strong) NIMMessageSetting *setting;
/**
* 消息反垃圾配置
* @discussion 目前仅支持易盾,只有接入了易盾才可以设置这个配置
*/
@property (nullable,nonatomic,strong) NIMAntiSpamOption *antiSpamOption;
/**
* 消息推送文案,长度限制200字节
*/
@property (nullable,nonatomic,copy) NSString *apnsContent;
/**
* 消息推送Payload
* @discussion 可以通过这个字段定义消息推送 Payload ,支持字段参考苹果技术文档,长度限制 2K
*/
@property (nullable,nonatomic,copy) NSDictionary *apnsPayload;
/**
* 指定成员推送选项
* @discussion 通过这个选项进行一些更复杂的推送设定,目前只能在群会话中使用
*/
@property (nullable,nonatomic,strong) NIMMessageApnsMemberOption *apnsMemberOption;
/**
* 服务器扩展
* @discussion 客户端可以设置这个字段,这个字段将在本地存储且发送至对端,上层需要保证 NSDictionary 可以转换为 JSON,长度限制 4K
*/
@property (nullable,nonatomic,copy) NSDictionary *remoteExt;
/**
* 客户端本地扩展
* @discussion 客户端可以设置这个字段,这个字段只在本地存储,不会发送至对端,上层需要保证 NSDictionary 可以转换为 JSON
*/
@property (nullable,nonatomic,copy) NSDictionary *localExt;
/**
* 消息拓展字段
* @discussion 服务器下发的消息拓展字段,并不在本地做持久化,目前只有聊天室中的消息才有该字段(NIMMessageChatroomExtension)
*/
@property (nullable,nonatomic,strong) id messageExt;
/**
* 消息发送时间
* @discussion 本地存储消息可以通过修改时间戳来调整其在会话列表中的位置,发完服务器的消息时间戳将被服务器自动修正
*/
@property (nonatomic,assign) NSTimeInterval timestamp;
/**
* 消息投递状态 仅针对发送的消息
*/
@property (nonatomic,assign,readonly) NIMMessageDeliveryState deliveryState;
/**
* 消息附件下载状态 仅针对收到的消息
*/
@property (nonatomic,assign,readonly) NIMMessageAttachmentDownloadState attachmentDownloadState;
/**
* 是否是收到的消息
* @discussion 由于有漫游消息的概念,所以自己发出的消息漫游下来后仍旧是"收到的消息",这个字段用于消息出错是时判断需要重发还是重收
*/
@property (nonatomic,assign,readonly) BOOL isReceivedMsg;
/**
* 是否是往外发的消息
* @discussion 由于能对自己发消息,所以并不是所有来源是自己的消息都是往外发的消息,这个字段用于判断头像排版位置(是左还是右)。
*/
@property (nonatomic,assign,readonly) BOOL isOutgoingMsg;
/**
* 消息是否被播放过
* @discussion 修改这个属性,后台会自动更新 db 中对应的数据。聊天室消息里,此字段无效。
*/
@property (nonatomic,assign) BOOL isPlayed;
/**
* 消息是否标记为已删除
* @discussion 已删除的消息在获取本地消息列表时会被过滤掉,只有根据 messageId 获取消息的接口可能会返回已删除消息。聊天室消息里,此字段无效。
*/
@property (nonatomic,assign,readonly) BOOL isDeleted;
/**
* 对端是否已读
* @discussion 只有当当前消息为 P2P 消息且 isOutgoingMsg 为 YES 时这个字段才有效,需要对端调用过发送已读回执的接口
*/
@property (nonatomic,assign,readonly) BOOL isRemoteRead;
/**
* 消息发送者名字
* @discussion 当发送者是自己时,这个值可能为空,这个值表示的是发送者当前的昵称,而不是发送消息时的昵称。聊天室消息里,此字段无效。
*/
@property (nullable,nonatomic,copy,readonly) NSString *senderName;
/**
* 发送者客户端类型
*/
@property (nonatomic,assign,readonly) NIMLoginClientType senderClientType;
@end
NS_ASSUME_NONNULL_END