集成方式
更新时间: 2024/06/13 10:31:23
网易云通信 SDK 支持两种方式集成。
1. 通过 Gradle 集成 SDK (推荐)
2. 通过类库配置集成 SDK
网易云通信 Android SDK 2.5.0 以上强烈推荐通过 Gradle 集成 SDK。
注意:信令SDK最低要求 Android 5.0
通过 Gradle 集成 SDK
首先,在整个工程的 build.gradle 文件中,配置 repositories,使用 jcenter 或者 maven ,二选一即可,如下:
groovyallprojects {
repositories {
jcenter() // 或者 mavenCentral()
}
}
第二步,在主工程的 build.gradle 文件中,添加 dependencies。根据自己项目的需求,添加不同的依赖即可。注意:版本号必须一致,这里以 9.5.0 版本为例:
groovy
android {
defaultConfig {
ndk {
//设置支持的SO库架构
abiFilters "armeabi-v7a", "x86","arm64-v8a","x86_64"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
// 添加依赖。注意,版本号必须一致。
// 基础功能 (必需)
compile 'com.netease.nimlib:basesdk:9.5.0'
// 信令服务需要
compile 'com.netease.nimlib:avsignalling:9.5.0'
}
再次注意:依赖包的版本号必须一致。
通过类库配置集成 SDK
首先到下载页面进行下载 Android SDK。开发者可以根据实际需求,配置类库。
以下介绍以 Android SDK v2.5 及以上版本为例,Android SDK v2.5 以下的配置,请咨询技术支持。
网易云通信 Android SDK v2.5 及以上分为两种 SDK 包下载,第一种包含全部功能:IM + 聊天室 + 信令SDK。第二种包含部分功能,包含:IM + 聊天室。请下载第一种包来集成信令功能。
SDK 包的 libs 文件夹中,包含了网易云通信的 jar 文件,各 jni 库文件夹以及 SDK 依赖的第三方库。
实现音视频通话功能,需要将这些文件拷贝到你的工程的 libs 目录下,即可完成配置。列表如下:
libs
├── nim-basesdk-6.5.0.jar (云通信SDK基础服务)
├── nim-avsingalling-6.5.0.jar (信令服务)
以上文件列表中,jar 文件版本号可能会不同,
权限与组件
在 AndroidManifest.xml
中加入以下配置:
xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx">
<!-- 权限声明 -->
<!-- 访问网络状态-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 外置存储存取权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 多媒体相关 -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
<!-- 和下面的 uses-permission 一起加入到你的 AndroidManifest 文件中。 -->
<permission
android:name="com.netease.nim.demo.permission.RECEIVE_MSG"
android:protectionLevel="signature"/>
<!-- 接收 SDK 消息广播权限, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
<uses-permission android:name="com.netease.nim.demo.permission.RECEIVE_MSG"/>
<application
...>
<!-- APP key, 可以在这里设置,也可以在 SDKOptions 中提供。
如果 SDKOptions 中提供了,取 SDKOptions 中的值。 -->
<meta-data
android:name="com.netease.nim.appKey"
android:value="key_of_your_app" />
<!-- 云信后台服务,请使用独立进程。 -->
<service
android:name="com.netease.nimlib.service.NimService"
android:process=":core"/>
<!-- 云信后台辅助服务 -->
<service
android:name="com.netease.nimlib.service.NimService$Aux"
android:process=":core"/>
<!-- 云信后台辅助服务 -->
<service
android:name="com.netease.nimlib.job.NIMJobService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":core"/>
<!-- 云信监视系统启动和网络变化的广播接收器,保持和 NimService 同一进程 -->
<receiver android:name="com.netease.nimlib.service.NimReceiver"
android:process=":core"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
<!-- 云信进程间通信 Receiver -->
<receiver android:name="com.netease.nimlib.service.ResponseReceiver"/>
<!-- 云信进程间通信service -->
<service android:name="com.netease.nimlib.service.ResponseService"/>
<!-- 云信进程间通信provider -->
<!-- android:authorities="{包名}.ipc.provider", 请将com.netease.nim.demo替换为自己的包名 -->
<provider
android:name="com.netease.nimlib.ipc.NIMContentProvider"
android:authorities="com.netease.nim.demo.ipc.provider"
android:exported="false"
android:process=":core" />
</application>
</manifest>
混淆配置
如果你的 apk 最终会经过代码混淆,请在 proguard 配置文件中加入以下代码:
-dontwarn com.netease.**
-keep class com.netease.** {*;}
#如果你使用全文检索插件,需要加入
-dontwarn org.apache.lucene.**
-keep class org.apache.lucene.** {*;}
总体接口介绍
网易云通信 SDK 提供了两类接口供开发者调用:一类是第三方 APP 主动发起请求,第二类是第三方 APP 作为观察者监听事件和变化。第一类接口名均以 Service 结尾,例如 AuthService ,第二类接口名均以 ServiceObserver 结尾,例如 AuthServiceObserver,个别太长的类名则可能直接以 Observer 结尾,比如 SystemMessageObserver。
SDK 提供三种接口返回值:基本数据类型(同步接口),InvocationFuture(异步接口) 和 AbortableFuture(异步接口)。异步接口基本上都是从主进程发起调用,然后在后台进程执行,最后再将结果返回给主进程。
SDK 接口返回值 | 说明 |
---|---|
基本数据类型 | 同步接口 |
InvocationFuture | 异步接口 |
AbortableFuture | 异步接口,耗时很长或者传输大量数据时使用,可用 abort() 方法,中断请求。 例如上传下载、登录等 |
异步接口可设置回调函数,提供两种方式:RequestCallback 和 RequestCallbackWrapper。
异步接口回调函数 | 说明 |
---|---|
RequestCallback | 需要实现3个接口: 成功 onSuccess, 失败 onFailed, 异常 onException |
RequestCallbackWrapper | 需要实现 onResult。封装了成功,失败和异常的3个接口,在参数上进行区分 |
SDK 4.4.0 API调用框架增强:
- 支持带 Looper 的非UI线程发起的异步API调用,直接回调到调用者线程。老版本会默认回调到 UI 线程。
- 提供异步强制转成同步的接口:NIMClient#syncRequest,允许设置最大同步等待时间,支持非 UI 线程里需要同步调用云信 API的场景。
- 添加自动生成的 NIMSDK类,开发者可以直接采用 NIMSDK#getXXXService 方法获取服务接口,不再需要传递 XXXService.class,简化 API 调用方式。其他插件自动生成的调用入口类为:NIMChatRoomSDK、NIMLuceneSDK。例如采用
NIMSDK.getAuthService().login()
替换NIMClient.getService(AuthService.class).login()
。
SDK 提供的接口主要按照业务进行分类,大致说明如下:
SDK接口 | 说明 |
---|---|
AuthService | 用户认证服务接口,提供登录注销接口。 |
AuthServiceObserver | 用户认证服务观察者接口。 |
MsgService | 消息服务接口,用于发送消息,管理消息记录等。 同时还提供了发送自定义通知的接口。 |
MsgServiceObserve | 接收消息,消息状态变化等观察者接口。 |
LuceneService | 聊天消息全文检索接口。 |
TeamService | 群组服务接口,用于发送群组消息,管理群组和群成员资料等。 |
TeamServiceObserve | 群组和群成员资料变化观察者。 |
SystemMessageService | 系统通知观察者。 |
FriendService | 好友关系托管接口,目前支持添加、删除好友、 获取好友列表、黑名单、设置消息提醒。 |
FriendServiceObserve | 好友关系变更、黑名单变更通知观察者。 |
UserService | 用户资料托管接口,提供获取用户资料、修改个人资料等。 |
UserServiceObserve | 用户资料变更观察者接口。 |
AVChatManager | 语音视频通话接口。 |
RTSManager | 实时会话接口。 |
NosService | 网易云存储服务,提供文件上传和下载。 |
NosServiceObserve | 网易云存储传输进度观察者接口。 |
MixPushService | 第三方推送接口,提供第三方推送服务。 |
EventSubscribeService | 事件订阅服务接口,提供事件订阅等服务 |
EventSubscribeServiceObserver | 事件状态变更观察者接口。 |
RedPacketService | 红包接口。提供获取红包sdk token等功能。 |
RobotService | 机器人操作相关接口,提供获取机器人、 获取机器人信息、判断是否是机器人等功能。 |
RobotServiceObserve | 机器人数据变更观察者接口。 |
SettingsService | 系统设置接口。提供多端推送、免打扰配置 |
SettingsServiceObserver | 系统设置变更观察者接口。 |