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