初始化和登录
更新时间: 2025/09/11 14:15:56
网易云信 IM UIKit 的核心类为 IMKitClient,提供初始化、登录、获取当前账号信息等能力。在使用 IM UIKit(V10)功能前,您需要先初始化 IM UIKit,但不需要单独初始化 NIM SDK。
前提条件
根据本文操作前,请确保您已完成了以下工作:
-
已完成 导入组件。
-
已 注册 IM 账号,获取账号 ID
account_id和密钥 Token。 -
如果需要实现 地理位置消息 功能(基于高德地图),还需确保已在
AndroidManifest.xml为您的应用配置:单击查看高德地图 API Key 和 定位服务(APSService)配置方式。
XML<!-- 高德地图定位 --> //在您的 applicaion 节点中配置 apiKey 和 APSService <application android:name=".IMApplication"> <meta-data android:name="com.amap.api.v2.apikey" android:value="apikey" /> // 传入您的高德地图 API Key <service android:name="com.amap.api.location.APSService" /> </application>高德地图 API Key 的具体获取方式,请访问 高德开放平台文档。
注意事项
由于 IM UIKit 的初始化与登录是通过底层调用 NIM SDK 接口来实现的,因此重复调用 IM UIKit 和 NIM SDK 的初始化与登录接口会相互覆盖传入的信息(包括 推送配置信息)。
所以若您同时集成 IM UIKit 和 NIM SDK,只需要调用一次初始化与登录接口即可。
初始化(简化方式)
IM UIKit 的初始化,最简单的实现方式为:在应用启动时或者页面加载时,都可以调用 IMKitClient.init 方法。
初始化必须在应用的生命周期内或者 Activity 中都可以进行,且只可进行一次。
-
方法原型
Java
IMKitClient.init(Context context,SDKOptions options) -
参数说明
参数类型说明 context Context 应用上下文 options SDKOptionsSDK 的配置信息。
其中 App Key 必须传入。- SDK 默认使用本地会话,若需要使用云端会话功能,除了在组件导入时,引入云端会话外,还需要在初始化时,将
SDKOptions.enableV2CloudConversation设置为 true。只有设置为 true 后,才能正常使用云端会话服务。- 如果您的应用主要服务于 海外用户,需要配置私有化服务器地址中的 LBS 和 link 域名相关信息,具体参考 配置 LBS 和 Link 域名。
local Locale 设置当前 UIKit 语言,创建 new Locale(localeStr)对象的参数,localeStr 值 "zh" 代表中文,"en" 代表英文。 - SDK 默认使用本地会话,若需要使用云端会话功能,除了在组件导入时,引入云端会话外,还需要在初始化时,将
-
示例代码
Javapublic class IMApplication extends MultiDexApplication { private static final String TAG = "IMApplication"; @Override public void onCreate() { SDKOptions options = new SDKOptions(); options.appKey = "App Key"; //开启云端会话功能 //options.enableV2CloudConversation = true; //设置语言,localeStr 值 "zh" 代表中文,"en" 代表英文 String localeStr = AppLanguageConfig.getInstance().getAppLanguage(this); IMKitClient.init(this, options, new Locale(localeStr)); //如果使用地图消息组件 locationkit,则需要初始化该组件 // 地图组件初始化 LocationConfig locationConfig = new LocationConfig(); // 高德地图 web API KEY,用于位置消息生成图片(高德提供服务,需要您自己创建 web 服务) // 位置消息展示方案,参考高德静态地图文档,文档地图如下 locationConfig.aMapWebServerKey = "web api key"; LocationKitClient.init(this, locationConfig); } }- 高德地图的位置消息生成图片服务需要您提前创建,具体请访问高德地图的 Web 服务 API。
- 位置消息展示方案,请访问 高德静态地图文档。
登录
初始化完成之后,进行网易云信 IM 登录,登录成功之后所有功能即可使用 IM UIKit 的初始化,最简单的实现方式为:在应用启动时或者页面加载时,都可以调用 IMKitClient.init 方法。
-
方法原型
Java
IMKitClient.login(String account, String token, V2NIMLoginOption option,FetchCallback<Void> callback) -
参数说明
参数类型说明 account String IM 账号 ID token String IM 账号鉴权 token,token 的获取请参考 登录 IM options V2NIMLoginOption登录的配置信息 -
示例代码
Javapublic class MainActivity extends Activity { private static final String TAG = "IMApplication"; @Override public void onCreate() { String acctount = "";//账号 ID String token = ""; //token IMKitClient.login(account,token,null,new FetchCallback<Void>() { @Override public void onError(int errorCode, @NonNull String errorMsg) { // 登录失败 } @Override public void onSuccess(@Nullable Void data) { // 登录成功 } }); } }
最佳实践
用户首次打开应用,需要接受应用的隐私协议,以保证业务隐私合规。因此建议在用户接受隐私协议之后再进行初始化。
参考流程如下:
-
在 Application 中进行初始化和隐私协议判断。
Javapublic class IMApplication extends MultiDexApplication { @Override public void onCreate() { //获取用户是否同意隐私协议,getPrivacyStatus()需要自己实现,在用户同意的时候本地保存,然后这里进行读取。 bool agreePrivacy = getPrivacyStatus(); SDKOptions options = new SDKOptions(); //填入 App Key options.appKey = "App Key"; if(agreePrivacy){ IMKitClient.init(this,options,null); } } } -
如果用户没有同意隐私协议,则自行实现相关页面跳转逻辑和目标页面,例如跳转到隐私协议授权页面
PrivacyActivity。Javapublic class PrivacyActivity extends Activity { private void agreePrivacy(){ //当用户同意隐私协议,则调用初始化接口 SDKOptions options = new SDKOptions(); //填入 App Key options.appKey = "App Key"; IMKitClient.init(this,options); } }上述示例代码中
PrivacyActivity和agreePrivacy()仅为示例名称,相应的逻辑需要开发者自行实现。
下一步
为保障通信安全,如果您在调试环境中的使用的是网易云信控制台生成的 IM 账号(测试用),请确保在后续的正式生产环境中,将其替换为 通过 IM 服务端 API 生成的正式 IM 账号。





