NIMSDK-AOS  9.16.3
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.invocation.sync.base.APISyncHelper;
10 import com.netease.nimlib.log.model.LogDesensitizationConfigHelper;
11 import com.netease.nimlib.report.ApiTraceEventManager;
16 import com.netease.nimlib.util.storage.NimStorageUtil;
17 
21 public class NIMClient {
22 
23  public static final String TAG = "NIMClient";
56  public static void init(Context context, LoginInfo info, SDKOptions options) {
57  long startTime = System.currentTimeMillis();
58  if (LogDesensitizationConfigHelper.printToLogcat()) {
59  Log.i(TAG, "NIMClient init");
60  }
61  SDKCache.config(context, info, options);
62 
63  // 老的初始化接口,需要判断进程
64  if (NIMUtil.isMainProcess(context)) {
65  SDKCache.initUI();
66  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","init");
67  }
68  }
69 
101  public static void config(Context context, LoginInfo info, SDKOptions options) {
102  long startTime = System.currentTimeMillis();
103  if (LogDesensitizationConfigHelper.printToLogcat()) {
104  Log.i(TAG, "NIMClient config");
105  }
106  SDKCache.config(context, info, options);
107 
108  //config时马上设置主进程标志位,防止LocalAgent构造时return导致空指针
109  if (NIMUtil.isMainProcessPure(context) > 0) {
110  SDKState.setProcessTag(2);
111  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","config");
112  }
113  }
114 
127  public static void initSDK() {
128  long startTime = System.currentTimeMillis();
129  if (LogDesensitizationConfigHelper.printToLogcat()) {
130  Log.i(TAG, "NIMClient initSDK");
131  }
132  SDKCache.initUI();
133  if (NIMUtil.isMainProcess(SDKCache.getContext())) {
134  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","initSDK");
135  }
136 
137  }
138 
167  public static void initDelay(Context context, LoginInfo info, SDKOptions options) {
168  long startTime = System.currentTimeMillis();
169  if (LogDesensitizationConfigHelper.printToLogcat()) {
170  Log.i(TAG, "NIMClient initDelay");
171  }
172 
173  // 老的初始化接口,需要判断进程
174  if (NIMUtil.isMainProcess(context)) {
175  SDKCache.config(context, info, options, true);
176  SDKCache.initUI();
177  ApiTraceEventManager.getInstance().recordPendingTrackEvent(startTime,"NIMClient","initDelay");
178  }
179  }
180 
205  public static <T> T getService(Class<T> clazz) {
206  return SDKCache.getService(clazz);
207  }
208 
243  public static <T> RequestResult<T> syncRequest(InvocationFuture<T> future, long time) {
244  return APISyncHelper.syncRequest(future, time);
245  }
246 
269  return APISyncHelper.syncRequest(future, 30 * 1000L);
270  }
271 
277  public static String getCurrentAccount(){
278  String account = SDKCache.getAccount();
279  if(account == null){
280  account = "";
281  }
282  return account;
283  }
284 
290  public static String getAppKey(){
291  try {
292  String appKey = SDKCache.getAppKey();
293  if(appKey == null)
294  {
295  return "";
296  }
297  return appKey;
298  } catch (Exception e) {
299  return "";
300  }
301  }
302 
308  public static StatusCode getStatus() {
309  return SDKState.getStatus();
310  }
311 
319  public static ModeCode getMode() {
320  return SDKState.getMode();
321  }
322 
331  public static void toggleNotification(boolean on) {
332  SDKCache.toggleNotification(on);
333  }
334 
335 
344  public static void toggleRevokeMessageNotification(boolean on) {
345  SDKCache.toggleRevokeMessageNotification(on);
346  }
347 
357  SDKCache.updateStatusBarNotificationConfig(config);
358  }
359 
369  public static void updateStrings(NimStrings strings) {
370  SDKCache.updateStrings(strings);
371  }
372 
380  public static String getSdkStorageDirPath() {
381  return NimStorageUtil.getRootPath();
382  }
383 
389  public static String getSDKVersion() {
390  return BuildConfig.VERSION_NAME;
391  }
392 
393 
411  SDKCache.updateTokenSceneConfig(config);
412  }
413 
421  public static void updateCaptureDeviceInfoOption(CaptureDeviceInfoConfig captureDeviceInfoConfig) {
422  SDKCache.updateCaptureDeviceInfoOption(captureDeviceInfoConfig);
423  }
424 }
SDK中用到的字符串定义。可用于开发者定制显示文案,以及实现SDK对多语言的支持。 目前仅新消息状态栏提醒...
Definition: NimStrings.java:11
static void toggleNotification(boolean on)
通知栏消息提醒开关。
Definition: NIMClient.java:331
static int isMainProcessPure(Context context)
判断当前进程是否是主进程(纯净版本),不会有隐私不合规风险,但是不保证100判断正确 ...
Definition: NIMUtil.java:36
static String getSDKVersion()
运行时获取当前 SDK 版本号。
Definition: NIMClient.java:389
static void updateStrings(NimStrings strings)
更新系统文案。
Definition: NIMClient.java:369
static void config(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式二] 在 Application#onCreate() 中配置 SDK(仅仅是配置,不影响性能),具体可配置的参数...
Definition: NIMClient.java:101
云信API异步转同步调用结果
static boolean isMainProcess(Context context)
Definition: NIMUtil.java:95
用户当前状态码定义
Definition: StatusCode.java:6
SDK当前登录模式状态码定义
Definition: ModeCode.java:6
SDK 核心接口类,用于初始化 SDK,获取各个服务能力接口,获取当前状态等功能。
Definition: NIMClient.java:21
static String getSdkStorageDirPath()
获取 SDK 数据缓存目录路径。
Definition: NIMClient.java:380
static< T > RequestResult< T > syncRequest(InvocationFuture< T > future, long time)
在非 UI 线程中调用云信 SDK 异步 API,强制将异步调用转换为同步调用。
Definition: NIMClient.java:243
static< T > RequestResult< T > syncRequest(InvocationFuture< T > future)
在非 UI 线程调用云信 SDK 异步 API,强制将异步调用转换为同步调用。该接口已废弃,请使用 NIMClient#syncR...
Definition: NIMClient.java:268
static String getAppKey()
获取当前应用的 AppKey。
Definition: NIMClient.java:290
static void initSDK()
[初始化 SDK 方式二] 在 UI 进程主线程上按需初始化 SDK(不放在 Application#onCreate() 中初始化)。与 NI...
Definition: NIMClient.java:127
static StatusCode getStatus()
获取当前用户的状态。
Definition: NIMClient.java:308
用户登录认证信息。
Definition: LoginInfo.java:23
static void toggleRevokeMessageNotification(boolean on)
撤回消息需要通知栏提醒的开关。
Definition: NIMClient.java:344
static void initDelay(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式三] 在 UI 进程主线程上按需初始化 SDK(不一定放在 Application#onCreate() 中初始化)。 ...
Definition: NIMClient.java:167
可自定义的 SDK 选项设置。
Definition: SDKOptions.java:20
static void updateCaptureDeviceInfoOption(CaptureDeviceInfoConfig captureDeviceInfoConfig)
更新获取设备信息的相关配置。包括配置是否获取产品型号、是否获取制造商信息、是否获取品牌信息,null 表示...
Definition: NIMClient.java:421
static void updateTokenSceneConfig(NosTokenSceneConfig config)
更新 SDK NOS Token 场景配置。对于 SDK NOS Token,云信 SDK 有默认值 ,若用户不单独配置,则直接采用默认...
Definition: NIMClient.java:410
static ModeCode getMode()
获取 SDK 当前的登录模式。
Definition: NIMClient.java:319
SDK nos token场景配置,不配置的话,走默认值,默认值只有以下3种场景:
static< T > T getService(Class< T > clazz)
获取云信各服务接口。
Definition: NIMClient.java:205
static void init(Context context, LoginInfo info, SDKOptions options)
[初始化 SDK 方式一] 在 Application#onCreate() 中调用该方法在应用启动时初始化 SDK。 ...
Definition: NIMClient.java:56
static String getCurrentAccount()
获取当前用户的 IM 账号(accid)。
Definition: NIMClient.java:277
static void updateStatusBarNotificationConfig(StatusBarNotificationConfig config)
更新通知栏消息提醒配置,包括是否需要振动提醒、是否需要响铃提醒等。
Definition: NIMClient.java:356