快速集成 IM UIKit
更新时间: 2023/03/14 10:50:47
云信 IM UIKit 是基于 NIM SDK(网易云信 IM SDK)开发的一款即时通讯 UI 组件库,包括聊天、会话、搜索、群管理等组件。本文介绍如何快速跑通 IM UIKit 的集成流程。
前提条件
在开始集成 IM UIKit 前,请确保您已:
-
在云信控制台完成以下操作。
创建应用并获取 App Key 和 App Secret
1. 在左侧导航栏中找到“应用”,并单击“创建”。
2. 填写应用的基本信息后,单击“创建”。
3. 创建应用后,可以在左侧导航栏中查看该应用,并单击 “App Key 管理”,并获取 App Key 和 App Secret。注册云信 IM 账号,获取 accid 和 token
注册云信 IM 账号,获取 accid 和 token。accid 和 token 将用于登录云信服务端。
1. 在左侧导航栏中单击指定应用名称,进入该应用的详情页面。
2. 在“功能管理”中单击“账号管理”。
3. 在测试页面,单击“新建账号”,并填写账号(即accid)、昵称(即 name)、密码(即 Token)后,单击“确定”。 -
准备如下开发环境/工具:
- Android Studio Bumblebee
- Java 11
- Gradle 7.4.1
- Android Gradle Plugin 7.1.3
- Android v7.0 及以上版本
实现流程
步骤1:按需导入组件
根据业务需要,在您的项目的 build.gradle
中,以添加依赖的形式添加相应的 IM UIKit 组件和第三方库(Glide、Retrofit 和 OkHttp)。各组件相互独立,添加或删除均不影响项目编译。
例如,需要通讯录功能和会话列表功能,可添加 contactkit-ui
和 conversationkit-ui
。
dependencies {
// 通讯录功能
implementation("com.netease.yunxin.kit.contact:contactkit-ui:${LATEST_VERSION}")
// 会话列表功能组件
implementation("com.netease.yunxin.kit.conversation:conversationkit-ui:${LATEST_VERSION}")
// 群组功能组件
implementation("com.netease.yunxin.kit.team:teamkit-ui:${LATEST_VERSION}")
// 聊天功能组件
implementation("com.netease.yunxin.kit.chat:chatkit-ui:${LATEST_VERSION}")
// 搜索功能组件
implementation("com.netease.yunxin.kit.search:searchkit-ui:${LATEST_VERSION}")
// 位置消息功能组件
implementation("com.netease.yunxin.kit.locationkit:locationkit:${LATEST_VERSION}")
//图片库
implementation("com.github.bumptech.glide:glide:4.13.1")
//网络库
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
implementation("com.squareup.retrofit2:converter-scalars:2.9.0")
implementation("com.squareup.okhttp3:okhttp:4.9.3")
}
更多组件导入以及防止代码混淆的说明,请参见组件导入。
步骤2:初始化
-
在
AndroidManefest.xml
中配置 APP Key。如果需要使用“发送地理位置消息”的功能,还需在
AndroidManefest.xml
中配置高德地图 API Key 和定位服务(APSService)。示例代码如下:
//在application节点里面增加<meta-data>配置云信APPKey等 <application ...> <meta-data android:name="com.netease.nim.appKey" android:value="your APPKey" /> // 传入您的云信 App Key <!-- 高德地图API Key --> <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 项目的 IMApplication 的
onCreate
中添加如下代码。public class IMApplication extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); // 在Application的onCreate中添加 SDKOptions options = new SDKOptions(); //填入APPKEY options.appKey = "APP KEY"; //如果有account和token信息可以填入登录信息直接进行登录 LoginInfo loginInfo = LoginInfo.LoginInfoBuilder.loginInfoDefault("account", "token").build(); IMKitClient.init(this,loginInfo,options); if (IMKitUtils.isMainProcess(this)) { //位置消息模块需要初始化 LocationKitClient.init(); } } }
更多初始化说明,请参见初始化。
步骤3:登录
如果登录信息(LoginInfo
)在初始化的时候已传入,则不需要再进行本节内容介绍的登录步骤。
如果不能在 Applicatiton 中获取登录信息LoginInfo
,需调用IMKitClient
类中的loginIM
方法登录:
方法名 | 参数 | 说明 |
---|---|---|
loginIM |
LoginInfo |
与 IM 服务端建立长连接,登录 IM |
调用登录的方法时,将如下示例代码中的 accid
和 token
分别替换为您的云信账号 ID (即 accid)和 Token。
LoginInfo loginInfo = LoginInfo.LoginInfoBuilder.loginInfoDefault("accid","token").build();
IMKitClient.loginIM(loginInfo,new LoginCallback<LoginInfo>() {
@Override
public void onError(int errorCode, @NonNull String errorMsg) {
//登录失败
}
@Override
public void onSuccess(@Nullable LoginInfo data) {
//登录成功
}
});
步骤4:界面搭建
以搭建会话列表界面为例,基本流程如下(更多详情参见下文的界面集成详情):
-
在您应用中需要添加会话列表界面的 Activity 下创建
conversationFragment
。示例代码如下:
ConversationFragment conversationFragment = new ConversationFragment();
-
将
conversationFragment
添加到这个 Activity 中。FragmentManager fragmentManager = getSupportFragmentManager(); //R.id.container 你添加界面的GroupLayout fragmentManager .beginTransaction().add(R.id.container, conversationFragment) .commit();
上述示例代码中的
getSupportFragmentManager
方法属于 Android Activity 的默认方法,如果您使用 Android X 中的AddCompatActivity
则可以直接调用该方法。如果您使用的是android.app.acitivity
,则需要调用getFragmentManager
方法。
最终集成效果参考下图。
后续步骤
为保障通信安全,如果您在调试环境中的使用的是云信控制台生成的测试用 IM 账号 和 token
,请确保在后续的正式生产环境中,将其替换为通过 IM 服务端 API 生成的正式 IM 账号(accid
)和 token
。
相关参考
界面集成详情
IM UIKit 中提供的常用业务场景界面及相关详细集成说明如下:
界面 | 所属组件 | 描述 |
---|---|---|
ConversationFragment |
conversationkit-ui |
会话列表界面(创建或者跳转到该界面需要传入参数,详见集成会话列表界面) |
ContactFragment |
contactkit-ui |
通讯录界面 (创建或者跳转到该界面需要传入参数,详见集成通讯录界面) |
ChatP2PFragment /ChatP2PActivity |
chatkit-ui |
单聊会话界面(创建或者跳转到该界面需要传入参数,详见集成会话界面) |
ChatTeamFragment /ChatTeamActivity |
chatkit-ui |
群聊会话界面(创建或者跳转到该界面需要传入参数,详见集成会话界面) |
音视频通话
集成会话界面后,如果需要在会话界面实现音视频通话功能,请参见实现音视频通话。
常见问题排查
集成过程中的常见问题的排查说明,请参见IM UIKit 常见问题排查。