NIMMessageSearchOption.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. //
  2. // NIMMessageSearchOption.h
  3. // NIMLib
  4. //
  5. // Created by Netease.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "NIMGlobalDefs.h"
  10. NS_ASSUME_NONNULL_BEGIN
  11. @class NIMMessage;
  12. /**
  13. * 云端消息自定义过滤回调
  14. *
  15. * @param message 待过滤的消息
  16. * @discussion 返回YES表示该消息被过滤,不入库不会在历史消息结果中返回;返回NO,表示正常处理该消息。
  17. */
  18. typedef BOOL(^NIMHistoryMessageFilterBlock)(NIMMessage *message);
  19. /**
  20. * 搜索顺序
  21. */
  22. typedef NS_ENUM(NSInteger,NIMMessageSearchOrder) {
  23. /**
  24. * 从新消息往旧消息查询
  25. */
  26. NIMMessageSearchOrderDesc = 0,
  27. /**
  28. * 从旧消息往新消息查询
  29. */
  30. NIMMessageSearchOrderAsc = 1,
  31. };
  32. /**
  33. * 本地搜索选项
  34. * @discussion 搜索条件: 时间在(startTime,endTime) 内(不包含),类型为 messageTypes (或全类型) ,且匹配 searchContent 或 fromIds 的一定数量 (limit) 消息
  35. */
  36. @interface NIMMessageSearchOption : NSObject
  37. /**
  38. * 起始时间,默认为0
  39. */
  40. @property (nonatomic,assign) NSTimeInterval startTime;
  41. /**
  42. * 结束时间,默认为0
  43. * @discussion 搜索的结束时间,0 表示最大时间戳
  44. */
  45. @property (nonatomic,assign) NSTimeInterval endTime;
  46. /**
  47. * 检索条数
  48. * @discussion 默认100条,设置为0表示无条数限制
  49. */
  50. @property (nonatomic,assign) NSUInteger limit;
  51. /**
  52. * 检索顺序
  53. */
  54. @property (nonatomic,assign) NIMMessageSearchOrder order;
  55. /**
  56. * 查询的消息类型
  57. * @discusssion 消息类型组合,默认只搜索文本类型, 只有在 allMessageTypes 为 NO 时有效,取值范围为: NIMMessageType 枚举类型
  58. */
  59. @property (nonatomic,copy) NSArray<NSNumber *> *messageTypes;
  60. /**
  61. * 查询的消息子类型
  62. * @discusssion 消息子类型组合
  63. */
  64. @property (nonatomic,strong) NSArray<NSNumber *> *messageSubTypes;
  65. /**
  66. * 全部消息类型
  67. * @discussion 默认为 NO
  68. */
  69. @property (nonatomic,assign) BOOL allMessageTypes;
  70. /**
  71. * 检索文本
  72. */
  73. @property (nullable,nonatomic,copy) NSString *searchContent;
  74. /**
  75. * 消息发出者帐号列表
  76. */
  77. @property (nullable,nonatomic,copy) NSArray<NSString *> *fromIds;
  78. /**
  79. * 将搜索文本中的正则特殊字符转义,默认 YES
  80. */
  81. @property (nonatomic,assign) BOOL enableContentTransfer;
  82. @end
  83. /**
  84. * 检索服务器历史消息选项 (服务器)
  85. */
  86. @interface NIMHistoryMessageSearchOption : NSObject
  87. /**
  88. * 检索消息起始时间
  89. * @discussion 需要检索的起始时间,没有则传入0。
  90. */
  91. @property (nonatomic,assign) NSTimeInterval startTime;
  92. /**
  93. * 检索条数
  94. * @discussion 最大限制100条
  95. */
  96. @property (nonatomic,assign) NSUInteger limit;
  97. /**
  98. * 检索消息终止时间,此参数对聊天室会话无效。
  99. * @discussion 当前最早的时间,没有则传入 0。
  100. */
  101. @property (nonatomic,assign) NSTimeInterval endTime;
  102. /**
  103. * 检索消息的当前参考消息,返回的消息结果集里不会包含这条消息,此参数对聊天室会话无效。优先级低于下面的serverId
  104. * @discussion 传入最早时间,没有则传入nil。
  105. */
  106. @property (nullable,nonatomic,strong) NIMMessage *currentMessage;
  107. /**
  108. * 检索消息的当前参考消息,返回的消息结果集里不会包含这条serverId对应的消息,此参数对聊天室会话无效。优先级高于 上面currentMessage的serverId
  109. * @discussion 传入最早时间,没有则传入nil。
  110. */
  111. @property (nullable,nonatomic,copy) NSString *serverId;
  112. /**
  113. * 检索顺序。
  114. */
  115. @property (nonatomic,assign) NIMMessageSearchOrder order;
  116. /**
  117. * 是否需要同步到 db,此参数对聊天室会话无效。
  118. * @discussion SDK 删除消息分为两种模式:标记删除和彻底删除(参见 NIMDeleteMessagesOption)。
  119. * 若消息集在本地被标记删除,则意味着消息仍存在本地,但被打上了特殊的记号,同步后写入 db 会失败。
  120. * 只有不存在本地的消息才可以通过 sync 标记进行 db 存储
  121. */
  122. @property (nonatomic,assign) BOOL sync;
  123. /**
  124. * 查询的消息类型
  125. * @discusssion 消息类型组合,默认为 nil ,搜索全类型。一旦设置了这个字段,则 sync 字段失效,查询结果不会写入 db,需要通过设置syncMessageTypes来同步 。
  126. */
  127. @property (nonatomic,copy) NSArray<NSNumber *> *messageTypes;
  128. /**
  129. * 是否需要同步特定类型到 db,此参数对聊天室会话无效。
  130. * @discussion SDK 删除消息分为两种模式:标记删除和彻底删除(参见 NIMDeleteMessagesOption)。
  131. * 若消息集在本地被标记删除,则意味着消息仍存在本地,但被打上了特殊的记号,同步后写入 db 会失败。
  132. * 只有不存在本地的消息才可以通过 syncMessageTypes 标记进行 db 存储
  133. */
  134. @property (nonatomic,assign) BOOL syncMessageTypes;
  135. /**
  136. * 自定义消息过滤
  137. * @discusssion 自定义外部过滤回调方法。返回YES表示消息被过滤,不入库不回调,返回NO,表示消息正常入库和回调
  138. * 回调在内部工作线程,注意不要再该回调中执行阻塞或者耗时操作,防止影响内部的消息处理流程。
  139. */
  140. @property (nullable,nonatomic,strong) NIMHistoryMessageFilterBlock customFilter;
  141. /**
  142. * 同步云端消息到到本地时,如果消息所在的最近会话不存在,是否自动创建。默认为NO。
  143. */
  144. @property (nonatomic,assign) BOOL createRecentSessionIfNotExists;
  145. @end
  146. /**
  147. * 服务端消息关键字检索选项
  148. * @discussion 搜索条件: 时间在(startTime,endTime) 内(不包含),类型为 messageTypes (或全类型) ,且匹配 searchContent 或 fromIds 的一定数量 (limit) 消息
  149. */
  150. @interface NIMMessageServerRetrieveOption : NSObject
  151. /**
  152. * 起始时间,默认为0
  153. */
  154. @property (nonatomic,assign) NSTimeInterval startTime;
  155. /**
  156. * 结束时间,默认为0
  157. * @discussion 搜索的结束时间,0 表示最大时间戳
  158. */
  159. @property (nonatomic,assign) NSTimeInterval endTime;
  160. /**
  161. * 检索条数
  162. * @discussion 默认100条,设置为0表示无条数限制,最多100条
  163. */
  164. @property (nonatomic,assign) NSUInteger limit;
  165. /**
  166. * 检索顺序
  167. */
  168. @property (nonatomic,assign) NIMMessageSearchOrder order;
  169. /**
  170. * 关键字
  171. */
  172. @property (nullable,nonatomic,copy) NSString *keyword;
  173. @end
  174. NS_ASSUME_NONNULL_END