跳到主要内容

初始化

在使用 SDK 其它功能前,必须先进行初始化。本文中将详细说明初始化的方法。

注意事项

  • 必须在应用生命周期内调用初始化方法,只需要调用一次。
  • 初始化后,会启动应用主进程、与应用包名相关的 IPC 进程、以及融云默认推送进程。详情请参考关于多进程的说明

准备 App Key

您必须拥有正确的 App Key,才能进行初始化。

您可以登录融云控制台,从服务管理页面,查看您已创建的各个应用的 App Key。

如果您拥有多个应用,请注意选择应用名称(下图中标号 1)。另外,融云的每个应用都提供用于隔离生产和开发环境的两套独立 App Key / Secret。在获取应用的 App Key 时,请注意区分环境(生产 / 开发,下图中标号 2)。

提示
  • 如果您并非应用创建者,我们建议在获取 App Key 时确认页面上显示的数据中心是否符合预期。
  • 如果您尚未向融云申请应用上线,仅可使用开发环境。

appkey

初始化之前

部分配置必须在初始化之前完成,否则 SDK 功能无法正常工作。

  • 开通音视频服务:音视频服务需要手动开通。请根据应用的具体业务类型,开通对应的音视频服务。详细说明请参见开通音视频服务
  • 海外数据中心:因为音视频业务依赖即时通讯业务 IMLib 提供信令通道,如果您的应用使用海外数据中心,必须在初始化之前修改 IMLib SDK 默认连接的服务地址为海外数据中心地址。否则 SDK 默认连接中国国内数据中心服务地址。详细说明请参见配置海外数据中心服务地址

初始化

音视频 SDK 是基于即时通信 SDK 作为信令通道的,所以要分别初始化 IM SDK 和 RTC SDK。

初始化 IM SDK

如果不换 AppKey,在整个应用生命周期中,初始化一次即可。建议调用位置放在 Application 的 onCreate() 方法内,或在音视频功能模块的加载位置处。

提示

以下初始化方法要求 SDK 版本 ≧ 5.4.2。

请在 Application 的 onCreate() 方法中初始化 SDK,传入生产开发环境的 App Key。

String appKey = "YourAppKey"; // example: bos9p5rlcm2ba
InitOption initOption = new InitOption.Builder().build();

RongCoreClient.init(this, appKey, initOption);

初始化配置(InitOption)中封装了区域码(AreaCode)配置。SDK 将通过区域码获取有效的导航服务地址、文件服务地址、数据统计服务地址、和日志服务地址等配置。

  • 如果 App Key 属于中国(北京)数据中心,您无需传入任何配置,SDK 会使用默认配置。
  • 如果 App Key 属于海外数据中心,则必须传入有效的区域码(AreaCode)配置。请务必在控制台核验当前 App Key 所属海外数据中心后,找到 AreaCode 中对应的枚举值进行配置。

例如,使用新加坡数据中心的应用的生产开发环境的 App Key:

String appKey = "Singapore_dev_AppKey";
AreaCode areaCode = AreaCode.SG;

InitOption initOption = new InitOption.Builder()
.setAreaCode(areaCode)
.build();

RongIMClient.init(context, appKey, initOption);

除区域码外,初始化配置(InitOption)中还封装了以下配置:

  • 是否开启推送的开关(enablePush):是否整体禁用推送。
  • 主进程开关(isMainProcess):是否为主进程。默认情况下由 SDK 判断进程。
  • 导航服务地址(naviServer):一般情况下不建议单独配置。SDK 内部默认使用与区域码对应的地址。
  • 文件服务地址(fileServer):仅限私有云使用。
  • 数据统计服务地址(statisticServer):一般情况下不建议单独配置。SDK 内部默认使用与区域码对应的地址。
String appKey = "Your_AppKey";
AreaCode areaCode = AreaCode.BJ;

InitOption initOption = new InitOption.Builder()
.setAreaCode(areaCode)
.enablePush(true)
.setFileServer("http(s)://fileServer")
.setNaviServer("http(s)://naviServer")
.setStatisticServer("http(s)://StatisticServer")
.build();

RongIMClient.init(context, appKey, initOption);

初始化 RTC SDK

音视频用户之间的信令传输依赖于融云的即时通信(IM)服务,因此需要先与融云服务器建立 IM 链接,在连接成功后可以初始化 RTC SDK。

部分 RTC 引擎必须在初始化时提供,详见引擎配置

RongIMClient.connect("从您服务器端获取的 Token", new RongIMClient.ConnectCallback() {
@Override
public void onSuccess(String userId) {
// 连接成功
// RTCLib 初始化
RCRTCConfig.Builder config = RCRTCConfig.Builder.create();
RCRTCEngine.getInstance().init(context, config.build());
}

@Override
public void onError(RongIMClient.ConnectionErrorCode code) {
// 连接失败
}

@Override
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus databaseOpenStatus) {
// 数据库打开失败
}
});