NIMSDKConfig.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //
  2. // NIMSDKConfig.h
  3. // NIMLib
  4. //
  5. // Created by Netease.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @class NIMNotificationObject;
  11. @class NIMMessage;
  12. @class NIMChatroomCdnTrackInfo;
  13. /**
  14. * SDK 配置委托
  15. */
  16. @protocol NIMSDKConfigDelegate <NSObject>
  17. @optional
  18. /**
  19. * 是否需要忽略某个通知
  20. *
  21. * @param notification 通知对象
  22. *
  23. * @return 是否忽略
  24. */
  25. - (BOOL)shouldIgnoreNotification:(NIMNotificationObject *)notification;
  26. /**
  27. * 是否需要忽略某条消息
  28. *
  29. * @param message 消息对象
  30. *
  31. * @return 是否忽略
  32. */
  33. - (BOOL)shouldIgnoreMessage:(NIMMessage *)message;
  34. /**
  35. * 聊天室cdn统计回调,回调时间间隔为NIMSDKConfig.cdnTrackInterval
  36. */
  37. - (void)onChatroomCdnTrack:(NIMChatroomCdnTrackInfo *)trackInfo forRoom:(NSString *)roomID;
  38. @end
  39. /**
  40. * NIM SDK 配置项目
  41. */
  42. @interface NIMSDKConfig : NSObject
  43. /**
  44. * 返回配置项实例
  45. *
  46. * @return 配置项
  47. */
  48. + (instancetype)sharedConfig;
  49. /**
  50. * 设置禁用NIMSDK tracroute 能力
  51. * @discussion 默认为NO,SDK会在请求失败时,进行 traceroute ,探测网路中各节点,以判断在哪个节点失去连接
  52. */
  53. @property (nonatomic,assign) BOOL disableTraceroute;
  54. /**
  55. * 是否在收到消息后自动下载附件 (群和个人)
  56. * @discussion 默认为YES,SDK会在第一次收到消息是直接下载消息附件,上层开发可以根据自己的需要进行设置
  57. */
  58. @property (nonatomic,assign) BOOL fetchAttachmentAutomaticallyAfterReceiving;
  59. /**
  60. * 是否在收到聊天室消息后自动下载附件
  61. * @discussion 默认为NO
  62. */
  63. @property (nonatomic,assign) BOOL fetchAttachmentAutomaticallyAfterReceivingInChatroom;
  64. /**
  65. * 是否使用 NSFileProtectionNone 作为云信文件的 NSProtectionKey
  66. * @discussion 默认为 NO,只有在上层 APP 开启了 Data Protection 时才起效
  67. */
  68. @property (nonatomic,assign) BOOL fileProtectionNone;
  69. /**
  70. * 是否需要将被撤回的消息计入未读计算考虑
  71. * @discussion 默认为 NO。设置成 YES 的情况下,如果被撤回的消息本地还未读,那么当消息发生撤回时,对应会话的未读计数将减 1 以保持最近会话未读数的一致性
  72. * 默认未读 NO 的原因是客户端常常需要直接再写入一条 tip 消息用于提醒显示,使用 NO 作为默认值直接写入一条已读 tip 消息,避免未读计数发生两次变化,最终导致界面重复刷新
  73. * 如果客户场景不需要写入 tip 消息,可以设置为 YES,以保持未读计数的一致性。
  74. */
  75. @property (nonatomic,assign) BOOL shouldConsiderRevokedMessageUnreadCount;
  76. /**
  77. * 是否需要多端同步未读数
  78. * @discusssion 默认为 NO。设置成 YES 的情况下,同个账号多端(PC 和 移动端等)将同步未读计数。
  79. */
  80. @property (nonatomic,assign) BOOL shouldSyncUnreadCount;
  81. /**
  82. * 是否将群通知计入未读
  83. * @discusssion 默认为 NO。设置成 YES 的情况下,收到的群通知也会计入未读数
  84. */
  85. @property (nonatomic,assign) BOOL shouldCountTeamNotification;
  86. /**
  87. * 针对用户信息开启 https 支持
  88. * @discusssion 默认为 YES。在默认情况下,我们认为用户头像,群头像,聊天室类用户头像等信息都是默认托管在云信上,所以 SDK 会针对他们自动开启 https 支持。
  89. * 但如果你需要将这些信息都托管在自己的服务器上,需要设置这个接口为 NO,避免 SDK 自动将你的 http url 自动转换为 https url。
  90. */
  91. @property (nonatomic,assign) BOOL enabledHttpsForInfo;
  92. /**
  93. * 针对消息内容开启 https 支持
  94. * @discusssion 默认为 YES。在默认情况下,我们认为消息,包括图片,视频,音频信息都是默认托管在云信上,所以 SDK 会针对他们自动开启 https 支持。
  95. * 但如果你需要将这些信息都托管在自己的服务器上,需要设置这个接口为 NO,避免 SDK 自动将你的 http url 自动转换为 https url。 (强烈不建议)
  96. * 需要注意的是即时设置了这个属性,通过 iOS SDK 发出去的消息 URL 仍是 https 的,设置这个值只影响接收到的消息 URL 格式转换
  97. */
  98. @property (nonatomic,assign) BOOL enabledHttpsForMessage;
  99. /**
  100. * 自动登录重试次数
  101. * @discusssion 默认为 0。即默认情况下,自动登录将无限重试。设置成大于 0 的值后,在没有登录成功前,自动登录将重试最多 maxAutoLoginRetryTimes 次,如果失败,则抛出错误 (NIMLocalErrorCodeAutoLoginRetryLimit)。
  102. */
  103. @property (nonatomic,assign) NSInteger maxAutoLoginRetryTimes;
  104. /**
  105. * 本地 log 存活期
  106. * @discusssion 默认为 7 天。即超过 7 天的 log 将被清除。只能设置大于等于 2 的值。
  107. */
  108. @property (nonatomic,assign) NSInteger maximumLogDays;
  109. /**
  110. * 是否支持动图缩略
  111. * @discusssion 默认为 NO。即默认情况下,从服务器获取原图缩略图时,如果原图为动图,我们将返回原图第一帧的缩略图。
  112. * 而开启这个选项后,我们将返回缩略图后的动图。这个选项只影响从服务器获取的缩略图,不影响本地生成的缩略图。
  113. */
  114. @property (nonatomic,assign) BOOL animatedImageThumbnailEnabled;
  115. /**
  116. * 是否禁止后台重连
  117. * @discusssion 默认为 NO。即默认情况下,当程序退到后台断开连接后,如果 App 仍能运行,SDK 将继续执行自动重连机制。设置为 YES 后在后台将不自动重连,重连将被推迟到前台进行。
  118. * 只有特殊用户场景才需要此设置,无明确原因请勿设置。
  119. */
  120. @property (nonatomic,assign) BOOL reconnectInBackgroundStateDisabled;
  121. /**
  122. * 是否开启群回执功能
  123. * @discusssion 默认为 NO。
  124. */
  125. @property (nonatomic,assign) BOOL teamReceiptEnabled;
  126. /**
  127. * 配置项委托
  128. */
  129. @property (nullable,nonatomic,weak) id<NIMSDKConfigDelegate> delegate;
  130. /**
  131. 客户端自定义信息,用于多端登录时同步该信息
  132. */
  133. @property (nonatomic,copy) NSString *customTag;
  134. /**
  135. * 文件快传本地开关,默认YES
  136. */
  137. @property (nonatomic,assign) BOOL fileQuickTransferEnabled;
  138. /**
  139. * 是否开启异常错误上报, 默认 NO,不上报
  140. * @discussion 用户可以选择开启该选项,方便云信分析SDK发生的错误,优化SDK
  141. */
  142. @property (nonatomic, assign) BOOL exceptionOptimizationEnabled;
  143. /**
  144. * 是否开启异步读取最近会话,默认NO,不开启
  145. * @discussion 对于最近会话比较多的用户,初始读取数据库时,可能影响到启动速度,用户可以选择开启该选项,开启异步读取最近会话,
  146. * allRecentSessions会优先返回一部分最近会话,等到全部读取完成时,通过回调通知用户刷新UI。
  147. */
  148. @property (nonatomic, assign) BOOL asyncLoadRecentSessionEnabled;
  149. /**
  150. * 日志上传大小上限,默认 0,不限制,单位(byte)
  151. */
  152. @property (nonatomic, assign) unsigned long long maxUploadLogSize;
  153. /**
  154. * 是否同步置顶会话记录,默认NO
  155. */
  156. @property (nonatomic,assign) BOOL shouldSyncStickTopSessionInfos;
  157. /**
  158. 客户端自定义登录端类型,默认 0,需要设置大于0的值。
  159. */
  160. @property (nonatomic,assign) NSInteger customClientType;
  161. /**
  162. * cdn统计回调触发间隔。触发cdn拉流前设置,触发拉流后改动将不生效。0s代表不统计。默认30s。
  163. */
  164. @property (nonatomic, assign) NSTimeInterval cdnTrackInterval;
  165. /**
  166. * 设置 SDK 根目录
  167. *
  168. * @param sdkDir SDK 根目录
  169. * @discussion 设置该值后 SDK 产生的数据(包括聊天记录,但不包括临时文件)都将放置在这个目录下,如果不设置,所有数据将放置于 $Document/NIMSDK目录下
  170. * 该配置项必须在 NIMSDK 任一一个 sharedSDK 方法调用之前调用,否则配置无法生效
  171. */
  172. - (void)setupSDKDir:(NSString *)sdkDir;
  173. @end
  174. NS_ASSUME_NONNULL_END