NIMSDK-AOS  9.21.15
NIMClient.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk;
2 
3 import android.app.Application;
4 import android.content.Context;
5 import android.util.Log;
6 import com.netease.nimlib.BuildConfig;
7 import com.netease.nimlib.SDKCache;
8 import com.netease.nimlib.SDKState;
9 import com.netease.nimlib.abtest.ABTestManager;
10 import com.netease.nimlib.common.infra.Handlers;
11 import com.netease.nimlib.invocation.sync.base.APISyncHelper;
12 import com.netease.nimlib.log.model.LogDesensitizationConfigHelper;
13 import com.netease.nimlib.report.ApiTraceEventManager;
18 import com.netease.nimlib.util.storage.NimStorageUtil;
19 
20 /**
21  * SDK 核心接口类,用于初始化 SDK,获取各个服务能力接口,获取当前状态等功能。
22  */
23 public class NIMClient {
24 
25  public static final String TAG = "NIMClient";
26  /**
27  * [初始化 SDK 方式一] 在 {@link Application#onCreate()} 中调用该方法在应用启动时初始化 SDK。
28  *
29  * @par 使用场景:
30  * 属于常规初始化方式,适用绝大多数的初始化场景。
31  * @par 使用建议:
32  * 建议在 {@link Application#onCreate()} 中添加进程判断,SDK 的初始化方法必须在主进程中调用。不要把业务逻辑写入 core 进程,理论上,core 进程的 {@link Application#onCreate()}(或者 Application 的其他方法)只能做与 NIM SDK 相关的工作。IM 进程启动时也不要初始化第三方库。
33  * @par 调用时机:
34  * 请确保在调用其他 API 前先调用该方法初始化 SDK。
35  * @par 参数说明:
36  * <table>
37  * <tr>
38  * <th>参数名称</th>
39  * <th>描述</th>
40  * </tr>
41  * <tr>
42  * <td>context</td>
43  * <td>调用上下文</td>
44  * </tr>
45  * <tr>
46  * <td>info</td>
47  * <td>手动登录成功的用户信息。如 account(即 accid)和 token<ul><li>如果提供,SDK 在初始化的同时将自动调用登录接口进行登录(同时将打开用户相关的数据库)</li><li>如果当前还没有登录成功的用户,传入 null,后续可以手动调用 {@link com.netease.nimlib.sdk.auth.AuthService#login(LoginInfo)} 方法进行登录</li></ul></td>
48  * </tr>
49  * <tr>
50  * <td>options</td>
51  * <td>SDK 的其他初始化配置。如 App Key、第三方离线推送配置、是否开启会话已读多端同步等<ul><li>其中 App Key 如果已在集成 SDK 时(AndroidManifest.xml 中通过 meta-data 的方式设置)传入,则此处不需要再传入,<strong>否则必须传入</strong>,如果两处都设置了,取此处的值</li><li>如果返回值为 null,则全部使用默认参数</li></ul></td>
52  * </tr>
53  * </table>
54  * @par 相关回调:
55  * {@link com.netease.nimlib.sdk.lifecycle.SdkLifecycleObserver#observeMainProcessInitCompleteResult(Observer, boolean)} :初始化进程回调
56  *
57  */
58  public static void init(Context context, LoginInfo info, SDKOptions options) {
59  final long startTime = System.currentTimeMillis();
60  if (LogDesensitizationConfigHelper.printToLogcat(options)) {
61  Log.i(TAG, "NIMClient init");
62  }
63  SDKCache.config(context, info, options);
64 
65  // 老的初始化接口,需要判断进程
66  if (NIMUtil.isMainProcess(context)) {
67  SDKCache.initUI();
68  Handlers.sharedInstance().newMiscHandler().post(() -> {
69  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","init");
70  });
71  }
72  }
73 
74  /**
75  * [初始化 SDK 方式二] 在 {@link Application#onCreate()} 中配置 SDK(仅仅是配置,不影响性能),具体可配置的参数同 {@link NIMClient#init(Context, LoginInfo, SDKOptions)}。
76  *
77  * @par 使用场景:
78  * 适用于需要用户授权隐私信息采集的业务场景。与常规初始化 SDK 方式相比,该方式耗时更少,且更适配弱 IM 场景(应用仅需在其部分业务中使用 IM 能力(不需要在应用启动时就做 IM 自动登录),且并不需要保证消息、通知和数据的实时性的场景)。
79  * @par 使用建议:
80  * 该初始化方式一般不再需要做进程判断。
81  * @par 使用限制:
82  * 该接口适用的 SDK 版本:v5.0.0及以上。<br>
83  * {@link NIMClient#config(Context, LoginInfo, SDKOptions)} 方法必须与 {@link NIMClient#initSDK()} 方法搭配使用,在应用代码的任意位置初始化 SDK。
84  * @par 参数说明:
85  * <table>
86  * <tr>
87  * <th>参数名称</th>
88  * <th>描述</th>
89  * </tr>
90  * <tr>
91  * <td>context</td>
92  * <td>调用上下文</td>
93  * </tr>
94  * <tr>
95  * <td>info</td>
96  * <td>手动登录成功的用户信息。如 account(即 accid)和 token<ul><li>如果提供,SDK 在初始化的同时将自动调用登录接口进行登录(同时将打开用户相关的数据库)</li><li>如果当前还没有登录成功的用户,传入 null,后续可以手动调用 {@link com.netease.nimlib.sdk.auth.AuthService#login(LoginInfo)} 方法进行登录</li></ul></td>
97  * </tr>
98  * <tr>
99  * <td>options</td>
100  * <td>SDK 的其他初始化配置。如 App Key、第三方离线推送配置、是否开启会话已读多端同步等<ul><li>其中 App Key 如果已在集成 SDK 时(AndroidManifest.xml 中通过 meta-data 的方式设置)传入,则此处不需要再传入,<strong>否则必须传入</strong>,如果两处都设置了,取此处的值</li><li>如果返回值为 null,则全部使用默认参数</li><li>可通过 {@link SDKOptions#asyncInitSDK} 参数配置进行同步/异步初始化</li><li>可通过 {@link SDKOptions#reducedIM} 参数实现支持弱 IM 模式,延迟加载 push 进程服务等<strong>(非弱 IM 场景慎用)</strong></li></ul></td>
101  * </tr>
102  * </table>
103  *
104  */
105  public static void config(Context context, LoginInfo info, SDKOptions options) {
106  final long startTime = System.currentTimeMillis();
107  if (LogDesensitizationConfigHelper.printToLogcat(options)) {
108  Log.i(TAG, "NIMClient config");
109  }
110  SDKCache.config(context, info, options);
111 
112  //config时马上设置主进程标志位,防止LocalAgent构造时return导致空指针
113  if (NIMUtil.isMainProcessPure(context) > 0) {
114  SDKState.setProcessTag(2);
115  Handlers.sharedInstance().newMiscHandler().post(() -> {
116  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","config");
117  });
118  }
119  }
120 
121  /**
122  * [初始化 SDK 方式二] 在 UI 进程主线程上按需初始化 SDK(不放在 {@link Application#onCreate()} 中初始化)。与 {@link NIMClient#config(Context, LoginInfo, SDKOptions)} 方法搭配使用。
123  *
124  * @par 使用场景:
125  * 适用于需要用户授权隐私信息采集的业务场景。与常规初始化 SDK 方式相比,该方式耗时更少,且更适配弱 IM 场景(应用仅需在其部分业务中使用 IM 能力(不需要在应用启动时就做 IM 自动登录),且并不需要保证消息、通知和数据的实时性的场景)。
126  * @par 使用建议:
127  * 该初始化方式一般不再需要做进程判断。
128  * @par 使用限制:
129  * 该接口适用的 SDK 版本:v5.0.0及以上。<br>
130  * 该方法需要与 {@link NIMClient#config(Context, LoginInfo, SDKOptions)} 方法搭配使用,即先在 Application#onCreate 中调用 config 方法,然后在应用代码的任意位置调用 {@link NIMClient#initSDK()} 方法初始化 SDK。
131  *
132  */
133  public static void initSDK() {
134  long startTime = System.currentTimeMillis();
135  if (LogDesensitizationConfigHelper.printToLogcat()) {
136  Log.i(TAG, "NIMClient initSDK");
137  }
138  SDKCache.initUI();
139  if (NIMUtil.isMainProcess(SDKCache.getContext())) {
140  Handlers.sharedInstance().newMiscHandler().post(() -> {
141  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","initSDK");
142  });
143  }
144 
145  }
146 
147  /**
148  * [初始化 SDK 方式三] 在 UI 进程主线程上按需初始化 SDK(不一定放在 {@link Application#onCreate()} 中初始化)。
149  *
150  * @par 使用建议:
151  * 除特殊需求,不建议使用该方式进行初始化 SDK。
152  * @par 使用限制:
153  * 该接口适用的 SDK 版本:v 及以上。
154  * @par 参数说明:
155  * <table>
156  * <tr>
157  * <th>参数名称</th>
158  * <th>描述</th>
159  * </tr>
160  * <tr>
161  * <td>context</td>
162  * <td>调用上下文</td>
163  * </tr>
164  * <tr>
165  * <td>info</td>
166  * <td>手动登录成功的用户信息。如 account(即 accid)和 token<ul><li>如果提供,SDK 在初始化的同时将自动调用登录接口进行登录(同时将打开用户相关的数据库)</li><li>如果当前还没有登录成功的用户,传入 null,后续可以手动调用 {@link com.netease.nimlib.sdk.auth.AuthService#login(LoginInfo)} 方法进行登录</li></ul></td>
167  * </tr>
168  * <tr>
169  * <td>options</td>
170  * <td>SDK 的其他初始化配置。如 App Key、第三方离线推送配置、是否开启会话已读多端同步等<ul><li>其中 App Key 如果已在集成 SDK 时(AndroidManifest.xml 中通过 meta-data 的方式设置)传入,则此处不需要再传入,<strong>否则必须传入</strong>,如果两处都设置了,取此处的值</li><li>如果返回值为 null,则全部使用默认参数</li><li>可通过 {@link SDKOptions#asyncInitSDK} 参数配置进行同步/异步初始化</li><li>可通过 {@link SDKOptions#reducedIM} 参数实现支持弱 IM 模式,延迟加载 push 进程服务等<strong>(非弱 IM 场景慎用)</strong></li></ul></td>
171  * </tr>
172  * </table>
173  *
174  */
175  public static void initDelay(Context context, LoginInfo info, SDKOptions options) {
176  long startTime = System.currentTimeMillis();
177  if (LogDesensitizationConfigHelper.printToLogcat(options)) {
178  Log.i(TAG, "NIMClient initDelay");
179  }
180 
181  // 老的初始化接口,需要判断进程
182  if (NIMUtil.isMainProcess(context)) {
183  SDKCache.config(context, info, options, true);
184  SDKCache.initUI();
185  Handlers.sharedInstance().newMiscHandler().post(() -> {
186  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","initDelay");
187  });
188  }
189  }
190 
191  /**
192  * 获取云信各服务接口。
193  *
194  * @par 调用时机:
195  * 调用 NIM SDK 其他接口前,需要先调用该接口。
196  * @par 参数说明:
197  * <table>
198  * <tr>
199  * <th>参数名称</th>
200  * <th>描述</th>
201  * </tr>
202  * <tr>
203  * <td>clazz</td>
204  * <td>服务接口类型实例</td>
205  * </tr>
206  * <tr>
207  * <td><T></td>
208  * <td>服务接口类型</td>
209  * </tr>
210  * </table>
211  * @par 返回:
212  * 服务接口
213  *
214  */
215  public static <T> T getService(Class<T> clazz) {
216  return SDKCache.getService(clazz);
217  }
218 
219  /**
220  * 在非 UI 线程中调用云信 SDK 异步 API,强制将异步调用转换为同步调用。
221  * @par 使用场景:
222  * 需要在没有 Looper 的非 UI 线程上同步调用云信 API,但是对应的接口云信没有同步版本,只有异步版本。例如,启动一个线程或者线程池处理云信 SDK 数据。
223  * @par 使用建议:
224  * 如果 SDK 提供了对应的同步API,请不要使用该方法强制转换一个异步 API。<br>
225  * 该方法将阻塞调用者线程,直到异步 API 有结果响应。因此,除特殊场景不建议使用!
226  * @par 使用限制:
227  * 不允许在 UI 线程上或者带 Looper 的非 UI 线程上使用该异步到同步的强制转换(不符合 Android规范)!否则结果会返回错误码 {@link ResponseCode#RES_API_SYNC_RUN_ON_LOOPER_THREAD_EXCEPTION}。
228  * @par 注意事项:
229  * 带 Looper 的非 UI 线程调用云信异步 API,会在调用线程执行回调(4.4.0 版本之前的 SDK 版本,会统一回调到 UI 线程上)。
230  * @par 参数说明:
231  * <table>
232  * <tr>
233  * <th>参数名称</th>
234  * <th>描述</th>
235  * </tr>
236  * <tr>
237  * <td>future</td>
238  * <td>异步 API 调用返回的回调</td>
239  * </tr>
240  * <tr>
241  * <td><T></td>
242  * <td>结果的数据类型</td>
243  * </tr>
244  * <tr>
245  * <td>time</td>
246  * <td>最大同步等待时间,单位毫秒,一般设置为 30000,超时后该方法直接返回错误,错误码参见 {@link ResponseCode#RES_API_SYNC_TIMEOUT}</td>
247  * </tr>
248  * </table>
249  * @par 返回:
250  * 在非 UI 线程上同步等待异步调用结果
251  *
252  */
253  public static <T> RequestResult<T> syncRequest(InvocationFuture<T> future, long time) {
254  return APISyncHelper.syncRequest(future, time);
255  }
256 
257  /**
258  * 在非 UI 线程调用云信 SDK 异步 API,强制将异步调用转换为同步调用。该接口已废弃,请使用 {@link NIMClient#syncRequest(InvocationFuture, long)} 接口。
259  * @par 参数说明:
260  * <table>
261  * <tr>
262  * <th>参数名称</th>
263  * <th>描述</th>
264  * </tr>
265  * <tr>
266  * <td>future</td>
267  * <td>异步 API 调用返回的回调</td>
268  * </tr>
269  * <tr>
270  * <td><T></td>
271  * <td>结果的数据类型</td>
272  * </tr>
273  * </table>
274  * @par 返回:
275  * 在非 UI 线程上同步等待异步调用结果
276  *
277  */
279  return APISyncHelper.syncRequest(future, 30 * 1000L);
280  }
281 
282  /**
283  * 获取当前用户的 IM 账号(accid)。
284  * @par 返回:
285  * 当前用户的 IM 账号(accid)
286  */
287  public static String getCurrentAccount(){
288  String account = SDKCache.getAccount();
289  if(account == null){
290  account = "";
291  }
292  return account;
293  }
294 
295  /**
296  * 获取当前应用的 AppKey。
297  * @par 返回:
298  * 当前应用的 AppKey
299  */
300  public static String getAppKey(){
301  try {
302  String appKey = SDKCache.getAppKey();
303  if(appKey == null)
304  {
305  return "";
306  }
307  return appKey;
308  } catch (Exception e) {
309  return "";
310  }
311  }
312 
313  /**
314  * 获取最近一次 ABTest HTTP 请求返回的原始 body。
315  *
316  * @par 返回:
317  * ABTest HTTP 回调返回的原始 body;若尚未收到 ABTest HTTP 响应,返回 null。
318  */
319  public static String getABTestHttpRawBody() {
320  return ABTestManager.getInstance().getABTestHttpRawBody();
321  }
322 
323  /**
324  * 获取当前用户的状态。
325  * @par 返回:
326  * 当前用户的状态 {@link StatusCode}
327  */
328  public static StatusCode getStatus() {
329  return SDKState.getStatus();
330  }
331 
332  /**
333  * 获取 SDK 当前的登录模式。
334  *
335  * @par 返回:
336  * 当前的登录模式 {@link ModeCode}包括以下三种模式:<ul><li>INIT:初始状态 </li><li>IM:IM 登录模式(可以登录聊天室,但需要保持 IM 和聊天室连接)</li><li>CHAT_ROOM_INDEPENDENT:聊天室独立登录模式(不需要 IM 连接)</li></ul>
337  */
338 
339  public static ModeCode getMode() {
340  return SDKState.getMode();
341  }
342 
343  /**
344  * 通知栏消息提醒开关。
345  * @par 调用限制:
346  * 只有 {@link StatusBarNotificationConfig} 配置不为空时才有效。<br>
347  * SDKOptions.StatusBarNotificationConfig 默认为 null,即 SDK 不提供通知栏提醒功能,由客户 APP自行实现。因此如需启用通知栏消息提醒功能,需要先设置初始化参数 StatusBarNotificationConfig。
348  * @par 参数说明:
349  * on :开关,true 为开启,false 为关闭,默认开启
350  */
351  public static void toggleNotification(boolean on) {
352  SDKCache.toggleNotification(on);
353  }
354 
355 
356  /**
357  * 撤回消息需要通知栏提醒的开关。
358  * @par 调用限制:
359  *只有 StatusBarNotificationConfig 配置不为空且通知栏消息提醒({@link NIMClient#toggleNotification(boolean)})开启时才有效。
360  * @par 参数说明:
361  * on :开关,true 为开启,false 为关闭,默认开启
362  *
363  */
364  public static void toggleRevokeMessageNotification(boolean on) {
365  SDKCache.toggleRevokeMessageNotification(on);
366  }
367 
368  /**
369  * 更新通知栏消息提醒配置,包括是否需要振动提醒、是否需要响铃提醒等。
370  * @par 使用场景:
371  * 若未在初始化(SDKOptions.StatusBarNotificationConfig)时设置通知栏消息的配置项,或者初始化时设置了,但是需要修改其配置项,可调用该接口实现通知栏消息提醒配置的更新。
372  * @par 参数说明:
373  * config 通知栏消息提醒的配置项,包括响铃提醒、振动提醒、免打扰设置等
374  *
375  */
377  SDKCache.updateStatusBarNotificationConfig(config);
378  }
379 
380  /**
381  * 更新系统文案。
382  * @par 使用场景:
383  * 当系统语言发生变化时,可以调用该接口更新文案配置,实现 SDK 对多语言的支持。也可以用于定制通知栏消息提醒的文案。
384  * @par 注意事项:
385  * 配置不能立即生效,所有文案均需要在下次使用时才会生效。
386  * @par 参数说明:
387  * strings SDK 中用到的文案字符串定义,目前仅状态栏消息提醒处使用。如果您没有提供自定义值,只使用默认值
388  */
389  public static void updateStrings(NimStrings strings) {
390  SDKCache.updateStrings(strings);
391  }
392 
393  /**
394  * 获取 SDK 数据缓存目录路径。
395  * @par 调用时机:
396  * 建议在初始化 SDK 之后调用。
397  * @par 返回:
398  * SDK 数据缓存目录路径(包含子目录,如日志文件 log、消息中的文件 file、消息中的原图 image、消息中的音频 audio、消息中的原视频 video、图片/视频消息中的缩略图 thumb 等)
399  */
400  public static String getSdkStorageDirPath() {
401  return NimStorageUtil.getRootPath();
402  }
403 
404  /**
405  * 运行时获取当前 SDK 版本号。
406  * @par 返回:
407  * 当前 SDK 版本号,例如 "1.0.0"
408  */
409  public static String getSDKVersion() {
410  return BuildConfig.VERSION_NAME;
411  }
412 
413 
414  /**
415  * 更新 SDK NOS Token 场景配置。对于 SDK NOS Token,云信 SDK 有默认值 ,若用户不单独配置,则直接采用默认值。
416  * @par 默认值对应场景:
417  * <ul><li>NimNosSceneKeyConstant::NIM_DEFAULT_PROFILE:用户和群组资料(例如头像)的上传默认走该场景</li><li>NimNosSceneKeyConstant::NIM_DEFAULT_IM:私聊、群聊、聊天室发送图片、音频、视频、文件等动作默认走该场景</li><li>NimNosSceneKeyConstant::NIM_SYSTEM_NOS_SCENE:SDK 内部上传文件(例如日志)默认走该场景,并且对应的过期时间不允许修改</li></ul>
418  * 默认场景对应的默认过期时间为 NEVER_EXPIRE(永不过期,资源一直存在于服务器),用户可以修改默认场景(除 NIM_SYSTEM_NOS_SCENE 场景)的过期时间。<br>
419  * 同时用户可以新增自定义场景并指定对应的过期时间(sceneKey-> expireTimeByDay),目前最多增加 10 个场景。
420  * @par 使用场景:
421  * 如果用户发送消息或上传文件等动作,需要指定其他的场景(指定 NOS 服务网络),可以先新增自定义场景,后续只需要传入相应的 sceneKey 即可。
422  * @par 使用建议:
423  * 在配置时,强烈建议将相应的 sceneKey 常量化,以方便使用,具体请参考 {@link com.netease.nimlib.NimNosSceneKeyConstant}。
424  * @par 参数说明:
425  * config NOS Token 场景配置
426  * @par 相关接口:
427  * <ul><li>{@link NosTokenSceneConfig#appendCustomScene(String, int)}:增加自定义场景</li><li>{@link NosTokenSceneConfig#updateDefaultProfileSceneExpireTime(int)}:更新默认场景(NIM_DEFAULT_PROFILE)的过期时间</li><li>{@link NosTokenSceneConfig#updateDefaultIMSceneExpireTime(int)}:更新默认场景(NIM_DEFAULT_IM)的过期时间</li></ul>
428  *
429  */
431  SDKCache.updateTokenSceneConfig(config);
432  }
433 
434  /**
435  * 更新获取设备信息的相关配置。包括配置是否获取产品型号、是否获取制造商信息、是否获取品牌信息,null 表示都可以获取,没有限制。
436  * @par 注意事项:
437  * 不获取设备信息可能会影响功能的使用,若需要设置为不获取设备信息,请联系云信技术支持。
438  * @par 参数说明:
439  * captureDeviceInfoConfig 设备信息获取配置,包括配置是否获取产品型号、是否获取制造商信息、是否获取品牌信息
440  */
441  public static void updateCaptureDeviceInfoOption(CaptureDeviceInfoConfig captureDeviceInfoConfig) {
442  SDKCache.updateCaptureDeviceInfoOption(captureDeviceInfoConfig);
443  }
444 }
SDK中用到的字符串定义。可用于开发者定制显示文案,以及实现SDK对多语言的支持。 目前仅新消息状态栏提醒...
Definition: NimStrings.java:11
static void toggleNotification(boolean on)
通知栏消息提醒开关。
Definition: NIMClient.java:351
static int isMainProcessPure(Context context)
判断当前进程是否是主进程(纯净版本),不会有隐私不合规风险,但是不保证100判断正确 ...
Definition: NIMUtil.java:36
static String getABTestHttpRawBody()
获取最近一次 ABTest HTTP 请求返回的原始 body。
Definition: NIMClient.java:319
static String getSDKVersion()
运行时获取当前 SDK 版本号。
Definition: NIMClient.java:409
static void updateStrings(NimStrings strings)
更新系统文案。
Definition: NIMClient.java:389
static void config(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式二] 在 Application#onCreate() 中配置 SDK(仅仅是配置,不影响性能),具体可配置的参数...
Definition: NIMClient.java:105
云信API异步转同步调用结果
static boolean isMainProcess(Context context)
Definition: NIMUtil.java:95
用户当前状态码定义
Definition: StatusCode.java:6
SDK当前登录模式状态码定义
Definition: ModeCode.java:6
SDK 核心接口类,用于初始化 SDK,获取各个服务能力接口,获取当前状态等功能。
Definition: NIMClient.java:23
static String getSdkStorageDirPath()
获取 SDK 数据缓存目录路径。
Definition: NIMClient.java:400
static< T > RequestResult< T > syncRequest(InvocationFuture< T > future, long time)
在非 UI 线程中调用云信 SDK 异步 API,强制将异步调用转换为同步调用。
Definition: NIMClient.java:253
static< T > RequestResult< T > syncRequest(InvocationFuture< T > future)
在非 UI 线程调用云信 SDK 异步 API,强制将异步调用转换为同步调用。该接口已废弃,请使用 NIMClient#syncR...
Definition: NIMClient.java:278
static String getAppKey()
获取当前应用的 AppKey。
Definition: NIMClient.java:300
static void initSDK()
[初始化 SDK 方式二] 在 UI 进程主线程上按需初始化 SDK(不放在 Application#onCreate() 中初始化)。与 NI...
Definition: NIMClient.java:133
static StatusCode getStatus()
获取当前用户的状态。
Definition: NIMClient.java:328
用户登录认证信息。
Definition: LoginInfo.java:23
static void toggleRevokeMessageNotification(boolean on)
撤回消息需要通知栏提醒的开关。
Definition: NIMClient.java:364
static void initDelay(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式三] 在 UI 进程主线程上按需初始化 SDK(不一定放在 Application#onCreate() 中初始化)。 ...
Definition: NIMClient.java:175
可自定义的 SDK 选项设置。
Definition: SDKOptions.java:20
static void updateCaptureDeviceInfoOption(CaptureDeviceInfoConfig captureDeviceInfoConfig)
更新获取设备信息的相关配置。包括配置是否获取产品型号、是否获取制造商信息、是否获取品牌信息,null 表示...
Definition: NIMClient.java:441
static void updateTokenSceneConfig(NosTokenSceneConfig config)
更新 SDK NOS Token 场景配置。对于 SDK NOS Token,云信 SDK 有默认值 ,若用户不单独配置,则直接采用默认...
Definition: NIMClient.java:430
static ModeCode getMode()
获取 SDK 当前的登录模式。
Definition: NIMClient.java:339
SDK nos token场景配置,不配置的话,走默认值,默认值只有以下3种场景:
static< T > T getService(Class< T > clazz)
获取云信各服务接口。
Definition: NIMClient.java:215
static void init(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式一] 在 Application#onCreate() 中调用该方法在应用启动时初始化 SDK。 ...
Definition: NIMClient.java:58
static String getCurrentAccount()
获取当前用户的 IM 账号(accid)。
Definition: NIMClient.java:287
static void updateStatusBarNotificationConfig(StatusBarNotificationConfig config)
更新通知栏消息提醒配置,包括是否需要振动提醒、是否需要响铃提醒等。
Definition: NIMClient.java:376