NIMSDK-AOS  10.9.60
SDKOptions.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk;
2 
3 import androidx.annotation.NonNull;
16 
17 /**
18  * 可自定义的 SDK 选项设置。
19  */
20 @SuppressWarnings({"java:S1104", "java:S2259"})
21 public class SDKOptions {
22 
23  @NonNull
24  /**
25  * 使用 SDK 默认的选项配置。
26  */
27  public static final SDKOptions DEFAULT = new SDKOptions();
28 
29  /**
30  * 设置云信 SDK 的 AppKey。<br>
31  * AppKey 还可以通过在 AndroidManifest 文件中,通过 meta-data 的方式设置,如果两处都设置了,取此处的值。<br>
32  * 一个 AppKey 对应一个账号体系,AppKey 的取值优先级为:LoginInfo中的>SDKOptions 中的>AndroidManifest 中的 AppKey。
33  */
34  public String appKey;
35 
36  /**
37  * IM 登录时的Token回调接口
38  * 注意:使用动态登录(即LoginInfo.authType为1)时,必须设置
39  */
41  /**
42  * IM登陆时的LoginExt回调接口
43  */
45  /**
46  * 聊天室登陆时的Token回调接口
47  * 注意:聊天室使用动态登录(即LoginInfo.authType为1)时,必须设置
48  */
50  /**
51  * 聊天室登陆时的LoginExt回调接口
52  */
54 
55  /**
56  * 是否检查并使用 Asset 目录下的私有化服务器配置文件 server.conf(固定命名), 默认是 false,即不开启。
57  * @par 使用场景:
58  * 一般只有私有化项目中,在私有化测试期间需要开启此选项,并将配置文件放在 Assets/server.conf。
59  * @par 注意事项:
60  * 如果在 SDKOptions.serverConfig 已经配置私有化信息,那么该本地配置文件将失效!
61  */
62  public boolean useAssetServerAddressConfig = false;
63 
64  /**
65  * 通知栏提醒功能。默认为 null,表示 SDK 不提供状态栏提醒功能,由用户 APP自行实现。
66  */
68 
69  /**
70  * 用户信息提供者,由开发者提供给 NIM SDK 使用,主要用于通知栏显示的用户昵称和头像。
71  */
73 
74  /**
75  * 定制通知栏消息提醒的文案,包括內容文案(主要在通知栏下拉后展现其通知内容),Ticker文案(主要在通知栏弹框提醒时的内容)以及消息撤回时的提醒文案。
76  */
78 
79  /**
80  * 外置存储根目录,用于存放多媒体消息文件。若不设置或设置的路径不可用,将使用"external storage root/packageName/nim/"作为根目录。
81  * @par 注意事项:
82  * 4.4.0 版本以后,如果开发者配置在 Context::getExternalCacheDir 或 Context.getExternalFilesDir 等应用扩展存储缓存目录下,SDK 内部将不再检查写权限。但这里的文件会随着 App 卸载而被删除,也可以由用户手动在设置界面里面清除。
83  */
84  public String sdkStorageRootPath;
85 
86  /**
87  * 数据库加密密钥,用于消息数据库加密。如果不设置,数据库处于明文状态; 设置后,数据库会加密保存数据,之前明文保存的历史数据也会被转为加密保存。
88  * @par 注意事项:
89  * 一旦开启过加密功能后,不支持退回明文保存状态!
90  */
91  public String databaseEncryptKey;
92 
93  /**
94  * 是否需要 SDK 自动预加载多媒体消息的附件。默认为 true,即 SDK 收到多媒体消息后,图片和视频会自动下载缩略图,音频会自动下载文件。如果关闭,第三方 APP 可以设置是否需要下载以及何时下载附件内容。
95  * @par 典型使用场景:
96  * 列表第一次滑动到这条消息时,才触发下载,以节省用户流量。
97  */
98  public boolean preloadAttach = true;
99 
100  /**
101  * 消息缩略图的尺寸,默认为 350 像素。<br>
102  * 该值为最长边的大小。下载的缩略图最长边不会超过该值。
103  */
104  public int thumbnailSize = 350;
105 
106  /**
107  * 是否开启会话已读多端同步,默认 false,即不支持多端同步会话未读数。
108  */
109  public boolean sessionReadAck = false;
110 
111  /**
112  * 是否提高 NIM SDK 进程优先级,默认为 true,表示提高 NIM SDK 进程优先级,可以降低 NIM SDK 核心进程被系统回收的概率。
113  * @par 使用场景:
114  * <ul><li>部分机型(意外情况下),可根据实际情况决定是否开启;</li>
115  * <li>4.6.0版本 起,弱 IM 模式下,强制不开启;</li>
116  * <li>其他场景,都建议开启提高 SDK 进程优先级。</li></ul>
117  */
118  public boolean improveSDKProcessPriority = true;
119 
120  /**
121  * 配置专属服务器的地址,常用于私有化部署。
122  */
124 
125  /**
126  * 预加载服务,默认为 true,表示开启预加载服务,预加载连接可以优化登录流程,提升用户体验。不建议设置为 false。
127  */
128  public boolean preLoadServers = true;
129 
130  /**
131  * 群通知消息是否计入未读数,默认为 false,即默认群消息不计入未读数。
132  */
133  public boolean teamNotificationMessageMarkUnread = false;
134 
135  /**
136  * 是否使用性能更好的 SDK 日志模式。默认为 false,即默认使用普通日志模式。
137  */
138  public boolean useXLog = false;
139 
140  /**
141  * SDK 日志总占用上限(MB)。
142  */
143  public int totalLogSizeInMB = LogMonitorConfig.DEFAULT_TOTAL_LOG_SIZE_MB;
144 
145  /**
146  * 单个日志文件的切分上限(MB)。
147  */
148  public int maxLogFileSizeInMB = LogMonitorConfig.DEFAULT_MAX_LOG_FILE_SIZE_MB;
149 
150  /**
151  * 日志保留天数。
152  */
153  public int logRetentionDays = LogMonitorConfig.DEFAULT_RETENTION_DAYS;
154 
155  /**
156  * 触发清理后的目标比例。
157  */
158  public float logCleanupRatio = LogMonitorConfig.DEFAULT_CLEANUP_RATIO;
159 
160  /**
161  * 是否对归档日志启用压缩。
162  */
163  public boolean archivedLogCompressionEnabled = LogMonitorConfig.DEFAULT_ARCHIVE_COMPRESSION_ENABLED;
164 
165  /**
166  * 是否支持动态缩略图。默认为 NO,即 NOS 对动图缩放流程为截取第一帧并缩放返回。<br>
167  * 若设置为 YES, SDK 在请求缩略图时候将直接下载动图。
168  */
169  public boolean animatedImageThumbnailEnabled = false;
170 
171  /**
172  * 是否支持异步初始化 SDK,默认同步初始化 SDK。
173  * @par 注意事项:
174  * <ul><li>如果您的 APP 不需要第一时间使用云信 API,可以采用异步加载,这样可以大大缩短在 Application::onCreate 中执行 SDK 初始化函数的响应时间。</li>
175  * <li>如果采用异步初始化,又在 SDK 初始化函数执行后立即调用 XXXService 接口,那么调用线程将会被阻塞 (不超过200ms),直到 SDK 异步初始化完成 (大约在60-180ms)</li>
176  * <li>无论同步还是异步初始化 SDK, 调用 XXXServiceObserver 接口不受任何影响。</li></ul>
177  */
178  public boolean asyncInitSDK = false;
179 
180  /**
181  * 是否为弱 IM 场景,默认为 false,即强 IM 场景。<br>
182  * 如果您的应用仅需在其部分业务中使用 IM 能力(不需要在应用启动时就做 IM 自动登录),且并不需要保证消息、通知和数据的实时性的场景(例如需要用户授权隐私信息采集的业务场景),那么可填 true,使用弱 IM 场景。非弱 IM 场景慎用!
183  * @par 注意事项:
184  * <ul><li>弱 IM 场景下,SDK 将在初始化过程中不启动 push 进程(维护与云信服务器的长连接),一直延迟到 IM 手动登录过程再做懒启动。启动后,push 进程的生命周期同 UI 进程,即当 UI 进程被销毁后,push 进程将自行退出,不占用系统资源,也不再保持与云信服务器的连接。</li>
185  * <li>弱 IM 场景下,请不要使用自动登录,如果使用了自动登录,那么该设置自动失效!</li></ul>
186  */
187  public boolean reducedIM = false;
188 
189  /**
190  * 是否在 SDK 初始化时检查 Manifest 文件配置是否完成,默认为 false,不检查。
191  * @par 使用建议:
192  * 建议在调试阶段开启,上线时关闭。
193  */
194  public boolean checkManifestConfig = false;
195 
196  /**
197  * 第三方离线推送配置。包括配置第三方推送证书的信息,以及是否根据token自动选择推送类型策略。<br>
198  * 目前 NIM SDK 支持的第三方推送厂商包括:小米、华为、荣耀、魅族、vivo、OPPO、以及谷歌 FCM。
199  */
201 
202  /**
203  * 是否使用随机退避重连策略,默认为 true,开启。强烈建议开启。如需关闭,请咨询云信技术支持。
204  */
205  public boolean enableBackOffReconnectStrategy = true;
206 
207  /**
208  * 应用开启前台服务,并且在手机系统中允许后台运行,关闭电池优化后,请同时开启启用enableBackgroundKeepAlive,保证回到后台后可以继续保持在线状态
209  * 开启此配置需要有android.permission.SCHEDULE_EXACT_ALARM 或 android.permission.USE_EXACT_ALARM 权限
210  */
211  public boolean enableBackgroundKeepAlive = false;
212 
213  /**
214  * 自动登录失败后的重连机制。云信默认的自动重连策略为:自动登录失败后,默认 2 秒后触发重连,如果一直连不上,重连时间指数级增长,2、4、6、8、16、32、64...<br>
215  * 如果需要自行配置重连时间,可联系技术支持开启此功能进行配置。
216  */
218 
219  /**
220  * 是否启用网络连接优化策略,默认为 true,开启网络链接优化策略。
221  */
222  public boolean enableLBSOptimize = true;
223 
224  /**
225  * 是否启用群消息已读功能,默认为 false,即关闭群消息已读功能。
226  */
227  public boolean enableTeamMsgAck = false;
228 
229  /**
230  * 是否需要将被撤回的消息计入未读数,默认为 false,即撤回消息不影响未读数。<br>
231  * 客户端通常直接写入一条 Tip 消息,用于提醒"对方撤回了一条消息",该消息也不计入未读数,不影响当前会话的未读数。<br>
232  * 如果设置为 true,撤回消息后未读数将减 1。
233  */
235 
236 
237  /**
238  * SDK 的 NOS Token 场景配置,对于 NOS Token,云信 SDK 有默认值 ,若用户不单独配置,则直接采用默认值。
239  * @par 默认值对应场景:
240  * <ul><li>NimNosSceneKeyConstant::NIM_DEFAULT_PROFILE:用户和群组资料(例如头像)的上传默认走该场景;</li>
241  * <li>NimNosSceneKeyConstant::NIM_DEFAULT_IM:私聊、群聊、聊天室发送图片、音频、视频、文件等动作默认走该场景;</li>
242  * <li>NimNosSceneKeyConstant::NIM_SYSTEM_NOS_SCENE:SDK 内部上传文件(例如日志)默认走该场景,并且对应的过期时间不允许修改。</li></ul>
243  */
245  /**
246  * 是否开启融合存储,默认为 true,即开启融合存储功能。<br>
247  * 开启融合存储后,SDK 在应用收到文件消息会自动启用 CDN 加速选择最快的节点进行存储,将文件消息存储到 AWS 服务器或网易对象存储(NetEase Object Storage, NOS)服务器上。<br>
248  * 如果您的应用涉及海外业务,则建议开启融合存储。
249  */
250  public boolean enableFcs = true;
251 
252  /**
253  * 融合存储使用分片上传的阈值,默认值为 5,单位 MB <br>
254  * 文件大小大于该阈值会使用分片上传 <br>
255  * 文件大小小于等于该阈值会使用普通上传
256  */
257  public int fcsMultipartUploadThresholdInMB = 5;
258  /**
259  * NOS 下载鉴权策略,用户可以自定义鉴权方式,如需使用该功能,请咨询云信技术支持。
260  */
262 
263  /**
264  * 是否开启运行时的异常统计,默认开启。
265  */
266  public boolean useNtServer = true;
267 
268  /**
269  * 登录时的自定义字段,登录成功后同步给其他端,可以通过 {@link com.netease.nimlib.sdk.auth.AuthServiceObserver#observeOtherClients(Observer, boolean)} 获取该字段。
270  */
271  public String loginCustomTag;
272 
273  /**
274  * 禁止后台进程唤醒 UI 进程,默认为 false。
275  */
276  public boolean disableAwake = false;
277 
278  /**
279  * 获取服务器时间的连续请求间隔时间,默认 2000ms,最小 1000ms。
280  */
281  public long fetchServerTimeInterval = 2000L;
282 
283  /**
284  * (功能已下线)是否开启IM日志自动上报
285  */
286  @Deprecated
287  public boolean reportImLog = false;
288 
289  /**
290  * 离线推送不显示详情(MixPushService#setPushShowNoDetail)时,显示的自定义推送文案类型(对应控制台中的自定义推送文案类型名称)。
291  */
292  public String customPushContentType = "";
293 
294  /**
295  * 最近会话(RecentContact)中内容(content 字段)的来源,默认为 MessageTypeTipPreferred。
296  * @par 内容来源:
297  * <ul><li>MessageTypeTipPreferred:优先使用对应消息的MsgTypeEnum.sendMessageTip,如果为空,则使用对应消息的 Content;</li>
298  * <li>MessageContentPreferred:优先使用对应消息的 Content,如果为空,则使用对应消息的MsgTypeEnum.sendMessageTip;</li>
299  * <li>MessageTypeTip:直接使用对应消息的MsgTypeEnum.sendMessageTip,即使为空;</li>
300  * <li>MessageContent:直接使用对应消息的 Content,即使为空。</li></ul>
301  */
303 
304  /**
305  * 是否同步置顶会话,默认为 false,即不同步置顶会话。
306  */
307  public boolean notifyStickTopSession = false;
308 
309  /**
310  * 当 NIM Service 启动失败时,是否尝试以前台服务的方式启动,默认为 false。
311  */
312  public boolean enableForegroundService = false;
313 
314  /**
315  * CDN 数据上报的回调间隔时间,默认 3000ms。
316  */
317  public int cdnRequestDataInterval = 3000;
318 
319  /**
320  * 是否支持回滚 SQLCipher 加密的数据库,默认为 false,即不支持回滚。
321  */
322  public boolean rollbackSQLCipher = false;
323 
324  /**
325  * Core 进程启动的超时时间(单位:ms),默认为 15s。
326  */
327  public int coreProcessStartTimeout = -1;
328 
329  /**
330  * 是否重置同步时间戳,启动时重置一次,默认为 false,即不重置。该功能不建议开启,如需开启该功能,请联系云信技术支持。
331  */
332  public boolean clearTimeTagAtBeginning = false;
333 
334  /**
335  * 是否开启数据库备份功能,默认为 false,即不备份。
336  */
337  public boolean enableDatabaseBackup = false;
338 
339  /**
340  * 设备信息获取的配置,包括是否获取产品型号、是否获取制造商信息以及是否获取品牌信息等。null 表示都可以获取。<br>
341  * 不获取设备信息可能影响 NIM SDK 功能的使用。如需使用,请联系云信技术支持。
342  */
343  public CaptureDeviceInfoConfig captureDeviceInfoConfig = new CaptureDeviceInfoConfig(true, true, true);
344 
345  /**
346  * 是否配置发送消息的第二超时时间,即发送超时(对应的状态为 408)后等待回包的时间,默认为 0。<br>
347  * 该配置属于特殊功能,如需使用该功能,请联系云信技术支持。
348  */
350 
351  /**
352  * 是否开启最近联系人会话时间索引,默认为 false,即不开启。
353  * @par 注意事项:
354  * 开启最近联系人会话时间索引后会明显减少查询最近联系人会话耗时,但是同时也会增加最新联系人会话写入操作耗时。
355  */
356  @Deprecated
357  public boolean enableRecentContactsTimeIndex = false;
358 
359  /**
360  * Flutter NIM SDK 的版本号。
361  */
362  public String flutterSdkVersion;
363 
364  /**
365  * 配置通知要走的通道(ChannelId),若不配置,则根据响铃振动走对应的默认通道。
366  */
368  /**
369  * 是否开启聊天室空间消息功能,默认为 false,即不开启。如需要使用该功能,请联系云信技术支持。<br>
370  * SDK 在 8.11.0 中新增了空间消息能力,用于在部分基于空间坐标的场景下给指定范围内的用户发送消息,如某游戏地图内指定范围的区域。在加入聊天室时,可以预设一个坐标位置来加入房间,并且可以订阅接收多少距离内的消息。
371  */
372  public boolean enableChatRoomLocation = false;
373 
374  /**
375  * 正在输入事件发送最小间隔,默认为 3000 ms。
376  */
377  public static final long MIN_MSG_TYPING_EVENT_INTERVAL = 3000L;
378  /**
379 
380  /**
381  * 日志脱敏配置,即设置是否隐藏涉及下载域名地址的日志信息。
382  */
383  public LogDesensitizationConfig logDesensitizationConfig;
384 
385  /**
386  * 是否开启控制台日志,默认为 false,即不开启。
387  */
388  public boolean consoleLogEnabled;
389 
390  /**
391  * 是否开启 loseConnection。
392  */
393  public boolean enableLoseConnection = false;
394  /**
395  * 圈组发送正在输入事件的最小间隔,默认的最小间隔为 3000ms,设置小于 3000ms无效。
396  */
397  public long qChatTypingEventMinInterval = MIN_MSG_TYPING_EVENT_INTERVAL;
398  /**
399  * 是否支持圈组消息缓存,默认为 false,即不开启。<br>
400  * 开启消息缓存后,可以为100个频道(QChatChannel)缓存消息,每个频道最多缓存 20 条。
401  */
402  public boolean enabledQChatMessageCache = false;
403  /**
404  * 默认false,如果为true,则消息状态是否成功会结合是否被拉入黑名单进行判断
405  */
406  public boolean fixMsgStatusByBlackList = false;
407  /**
408  * 数据同步配置。可设置是否在初始化时同步群成员以及超大群成员的信息,默认都为 true。
409  * true:同步;false:不同步
410  */
411  public SyncConfig syncConfig = new SyncConfig.Builder().build();
412 
413  /**
414  * 是否开启圈组自动订阅,默认为 false。
415  * true:开启圈组自动订阅;false:关闭圈组自动订阅
416  */
417  public boolean qchatAutoSubscribe = false;
418 
419  /**
420  * 是否开启日志记录,如果关闭,SDK运行将不会有任何日志记录,将影响问题排查(不建议关闭,如需关闭请联系技术支持)
421  */
422  public boolean openLog = true;
423 
424  @Deprecated
425  public boolean disableReport;
426 
427  public Integer customClientType;
428 
429  /**
430  * 是否开启“被过滤消息”的数据上报,默认为 false,即不开启。
431  * true:被过滤的消息要上报;false:被过滤的消息不上报
432  */
433  public boolean reportIgnoredMessage = false;
434 
435  public boolean disableV2Login = false;
436 
437  /**
438  * 数据上报开关
439  */
440  public boolean enableCompass = true;
441  /**
442  * 启动V2云端会话功能,V2云端会话功能需要在业务平台开启相关功能才可以使用
443  */
444  public boolean enableV2CloudConversation = false;
445  /**
446  * 是否开启增强的链接安全,默认为 true,即开启。
447  */
448  public boolean enableEnhancedLinkSecurity = true;
449  /**
450  * 是否开启搜索账号ID,默认为 false,即不开启。
451  * true:开启;false:不开启
452  */
453  public boolean searchAccountIdEnabled = false;
454  /**
455  * 是否开启服务端好友申请记录功能,默认为 false,即不开启。
456  */
457  public boolean enableServerV2FriendAddApplication = false;
458 }
LoginExtProvider loginExtProvider
IM登陆时的LoginExt回调接口
Definition: SDKOptions.java:44
SDK通过该接口从App获取LoginExt.
NosTokenSceneConfig mNosTokenSceneConfig
SDK 的 NOS Token 场景配置,对于 NOS Token,云信 SDK 有默认值 ,若用户不单独配置,则直接采用默认值。 ...
NotificationChannelProvider notificationChannelProvider
配置通知要走的通道(ChannelId),若不配置,则根据响铃振动走对应的默认通道。
SDK通过该接口从App获取聊天室动态token.
SDK通过该接口从App获取聊天室LoginExt.
用户信息提供者 由开发者提供给SDK使用
FcsDownloadAuthStrategy fcsDownloadAuthStrategy
NOS 下载鉴权策略,用户可以自定义鉴权方式,如需使用该功能,请咨询云信技术支持。
String databaseEncryptKey
数据库加密密钥,用于消息数据库加密。如果不设置,数据库处于明文状态; 设置后,数据库会加密保存数据,之...
Definition: SDKOptions.java:91
Created by chenkang on 2017/11/20.
ChatRoomAuthProvider chatroomAuthProvider
聊天室登陆时的Token回调接口 注意:聊天室使用动态登录(即LoginInfo.authType为1)时,必须设置 ...
Definition: SDKOptions.java:49
第二超时时间配置,即408后继续等待回包的时长
boolean shouldConsiderRevokedMessageUnreadCount
是否需要将被撤回的消息计入未读数,默认为 false,即撤回消息不影响未读数。 客户端通常直接写入一条 Tip ...
MixPushConfig mixPushConfig
第三方离线推送配置。包括配置第三方推送证书的信息,以及是否根据token自动选择推送类型策略。 目前 NIM S...
MessageNotifierCustomization messageNotifierCustomization
定制通知栏消息提醒的文案,包括內容文案(主要在通知栏下拉后展现其通知内容),Ticker文案(主要在通知栏...
Definition: SDKOptions.java:77
AuthProvider authProvider
IM 登录时的Token回调接口 注意:使用动态登录(即LoginInfo.authType为1)时,必须设置 ...
Definition: SDKOptions.java:40
云信私有化服务器配置项
String loginCustomTag
登录时的自定义字段,登录成功后同步给其他端,可以通过 com.netease.nimlib.sdk.auth.AuthServiceObserver#...
可自定义的 SDK 选项设置。
Definition: SDKOptions.java:21
ServerAddresses serverConfig
配置专属服务器的地址,常用于私有化部署。
String sdkStorageRootPath
外置存储根目录,用于存放多媒体消息文件。若不设置或设置的路径不可用,将使用"external storage root/pack...
Definition: SDKOptions.java:84
SDK通过该接口从App获取动态token.
SecondTimeoutConfig secondTimeoutForSendMessage
是否配置发送消息的第二超时时间,即发送超时(对应的状态为 408)后等待回包的时间,默认为 0。 该配置属...
SDK nos token场景配置,不配置的话,走默认值,默认值只有以下3种场景:
String flutterSdkVersion
Flutter NIM SDK 的版本号。
ReconnectStrategy reconnectStrategy
自动登录失败后的重连机制。云信默认的自动重连策略为:自动登录失败后,默认 2 秒后触发重连,如果一直连不...
ChatRoomLoginExtProvider chatroomLoginExtProvider
聊天室登陆时的LoginExt回调接口
Definition: SDKOptions.java:53
String appKey
设置云信 SDK 的 AppKey。 AppKey 还可以通过在 AndroidManifest 文件中,通过 meta-data 的方式设置,如果...
Definition: SDKOptions.java:34
StatusBarNotificationConfig statusBarNotificationConfig
通知栏提醒功能。默认为 null,表示 SDK 不提供状态栏提醒功能,由用户 APP自行实现。
Definition: SDKOptions.java:67
UserInfoProvider userInfoProvider
用户信息提供者,由开发者提供给 NIM SDK 使用,主要用于通知栏显示的用户昵称和头像。 ...
Definition: SDKOptions.java:72