实现首次通话
适用于 HarmonyOS 的 CallPlus 可在您的应用程序中为用户之间的一对一和多人通信提供语音和视频通话能力。
CallPlus 支持 一对一通话 和 多人通话。按照下面的指南使用 ArkTS / TypeScript 从头开始实现一对一通话和多人通话。
环境要求
适用于 HarmonyOS 的 CallPlus SDK 的最低要求如下。
- DevEco Studio NEXT Release(5.0.3.900) 及以上。
 - HarmonyOS SDK API 12 及以上。
 - 手机(真机)系统版本号:NEXT.0.0.31
 
前置条件
- 
注册开发者账号。注册成功后,控制台会默认自动创建您的首个应用,默认生成开发环境下的 App Key,使用国内数据中心。
 - 
获取开发环境的应用 App Key。如不使用默认应用,您可创建应用,并获取对应环境 App Key 和 App Secret。
注意
每个应用具有两个不同的 App Key,分别对应开发环境与生产环境,两个环境之间数据隔离。在您的应用正式上线前,可切换到使用生产环境的 App Key,以便上线前进行测试和最终发布。
 - 
开通音视频通话服务。
 
快速上手
您可以通过集成 CallPlus for HarmonyOS 进行一对一通话,或多人通话。
步骤 1 创建项目
打开 DevEco-Studio 并创建一个新项目,选择模版。

配置 quickDemo,点击 finish 创建

步骤 2 引入 SDK
您可以使用 ohpm 安装 @rongcloud/callplus,也可以通过下载对应的 har 文件手动导入到工程中。
自动导入
ohpm
- 找到工程目录的 
oh-package.json5文件,增加dependencies依赖配置。 
// entry 目录中的 oh-package.json5
{
  "name": "entry",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {
    "@rongcloud/rtclib": "x.y.z",
    "@rongcloud/imlib": "x.y.z",
    "@rongcloud/callplus": "x.y.z"
  }
}
- 
上一步完成后,点击
Sync Now或者在项目当前目录打开终端,执行ohpm installIDE 会自动对应下载好 har 包。注意
注意每个 SDK 的最新版本号可能不相同,具体版本可前往 OpenHarmony三方库中心仓 查询。
 
手动导入
- 在导入 SDK 前,您需要前往融云官网 SDK 下载页面,将音视频通话(无 UI)SDK 下载到本地。
 - 创建 ./libs 文件夹,将所需 SDK har 包 
CallPlus.har、RongIMLib.har、RTCLib.har放入其中。 
命令行安装 SDK
- 在工程根路径下执行以下命令行:
 
ohpm install libs/CallPlus.har
- 执行完后,工程根路径的 oh-package.json5 就会依赖 SDK。
 
// 工程根路径下的 oh-package.json5
{
  "name": "testDemo",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {
    "@rongcloud/callplus": "file:libs/CallPlus.har", // 该配置由命令行生成
  },
  "devDependencies": {
    "@ohos/hypium": "1.0.16",
    "@ohos/hamock": "1.0.0"
  }
}
entry 配置文件依赖 SDK
在 entry 同级目录的 oh-package.json5 手动配置 SDK 依赖。
// entry 同级目录下的 oh-package.json5 需要手动配置
{
  "name": "testDemo",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {
    "@rongcloud/callplus": "file:../libs/CallPlus.har",  // 该配置手动依赖
    "@rongcloud/imlib": "file:../libs/RongIMLib.har",  // 该配置手动依赖
    "@rongcloud/rtclib": "file:../libs/RTCLib.har"  // 该配置手动依赖
  },
  "devDependencies": {
    "@ohos/hypium": "1.0.16",
    "@ohos/hamock": "1.0.0"
  }
}
同步项目
在 entry/oh-package.json5 中点击 Sync Now 同步工程,同步成功之后即可正常使用 CallPlus SDK。
如果您同步之后依然无法导入 SDK,这可能是 DevEco Studio 的编译缓存导致的问题。您可以尝试把 DevEco Studio 完全关闭之后重新打开 APP 工程来解决问题。
步骤 3 权限配置
SDK 需要权限如下:
| 权限名称 | 权限说明 | 使用目的 | 
|---|---|---|
| ohos.permission.GET_NETWORK_INFO | 获取网络信息 | 网络变化之后获取网络信息,进行 IM 重连 | 
| ohos.permission.INTERNET | 使用网络 | 连接 IM 、收发消息需要 网络连接 | 
| ohos.permission.MICROPHONE | 麦克风权限 | 音频通话需要麦克风采集能力 | 
| ohos.permission.CAMERA | 摄像头权限 | 视频通话需要摄像头采集能力 | 
- 您的用户需要授予您的应用访问设备上的权限,请在 
quickDemo/entry/src/main/目录下找到module.json5文件,并添加requestPermissions,以配置摄像头权限为例: 
{
    "requestPermissions": [
        {
            "name": "ohos.permission.CAMERA",
            "reason": "$string:Camera",
            "usedScene": {
                "abilities": [
                    "EntryAbility",
                ],
                "when": "always"
            }
        },
        ... // 配置其他权限
    ]
}
具体权限配置参数含义,请参考鸿蒙官网文档权限配置
- 配置权限时,按照规则需要考虑国际化问题,在 
quickDemo/entry/src/main/resources/base/element找到string.json文件,对应增加配置字符变量,以配置摄像头字符变量为例: 
{
    "string": [
        {
            "name": "Camera",
            "value": "Camera in RTC"
        },
        ... // 定义其他
    ]
}
步骤 5 使用 App Key 初始化
从 1.9.0 版本开始,必须先调用 CallPlusInstance.install() 方法加载 CallPlus 模块,且该方法必须在 IM 初始化之前调用。
CallPlus 是基于 IMLib 作为信令通道的,要在您的应用程序中集成和运行,您需要先对 IMLib 初始化,核心类为 IMEngine 在 UIAbility 的 onCreate() 方法中,调用初始化方法,传入生产或开发环境的 App Key。
//1.9.0 版本新增方法:加载 CallPlus 模块,必需在 IM 初始化之前调用
CallPlusInstance.install();
/// 在 UIAbility 中获取 context 
let context = this.context
let initOption = new InitOption();
let appKey = "从融云后台获取的 appKey"
IMEngine.getInstance().init(context, appKey, initOption)
初始化配置 InitOption 中封装了区域码 RCAreaCode,导航服务地址 naviServer、统计服务地址 statisticServer ,文件下载路径 mediaSavePath。不作设置表示全部使用默认配置。SDK 默认连接北京数据中心。
注意
每个融云应用提供开发环境与生产环境,分别使用不同的 App Key,两个环境之间数据隔离。只要客户端应用使用同一个环境的 App Key,用户可以跨所有平台相互通信。