本文详细介绍如何快速集成声网 Cocos Creator SDK,并在你自己的 app 里实现基础的音频互动直播。
Cocos Creator 2.3.4 或以上(本文界面描述基于 Cocos Creator 2.4.3)
操作系统与集成开发环境要求:
目标平台 | 操作系统版本 | 集成开发环境版本 |
---|---|---|
Android | Android 4.1 或以上 |
|
iOS | iOS 9.0 或以上 | Xcode 9.0 或以上 |
有效的 Cocos 账户和 Cocos App ID。
参考以下步骤创建一个 Cocos Creator 项目。
打开 Cocos Creator 项目,点击界面右侧的服务打开服务面板。
点击 AppID 后的 按钮并点击设定 Cocos AppID。
点击下拉框,选择一个游戏,并点击关联,将该游戏与你的项目关联。
向下滚动服务面板,找到并点击 Agora RTC。
点击 Agora RTC 后的开通服务按钮 ,仔细阅读弹窗内容,并点击确认开通。
在 Agora RTC 面板底部,选择 SDK 类型为 Audio,并点击保存,即可获取声网 Cocos Creator SDK。
成功获取 SDK 后,Cocos Creator 会在你的 Cocos Creator 项目中自动添加获取设备权限的代码,你无需另行配置。
Cocos Creator 也会使用你的 Cocos Creator 账户为你自动注册声网账户并创建声网项目。你可以点击 Agora RTC 面板上的前往控制台,打开声网控制台。
声网会给每个项目自动分配一个 App ID 作为项目唯一标识。
在声网控制台的项目管理页面,找到你的项目,点击 App ID 右侧的 图标,即可获取项目的 App ID。
为提高项目的安全性,声网推荐使用 Token 对即将加入频道的用户进行鉴权。
为了方便测试,声网控制台提供生成 RTC 临时 Token 的功能。参考以下步骤获取 RTC 临时 Token:
testroom
,然后点击生成。后续调用 API 加入频道时,请确保填入的频道名与这里的频道名一致。现在,我们已经将声网 Cocos Creator SDK 集成到项目中了。你可以根据需要创建组件脚本及场景,并将组件脚本添加到场景节点中。详见创建和使用组件脚本。
接下来我们要在组件脚本中调用声网 Cocos Creator SDK 提供的核心 API 实现基础的音频互动直播功能,API 调用时序见下图。
根据场景需要,为你的项目创建音频互动直播的用户界面。如果已有界面,可以直接查看初始化声网引擎。
声网推荐你添加如下 UI 元素:
在调用其他声网 API 前,你需要初始化声网引擎。你需要在该步骤中填入声网项目的 App ID。详见获取声网 App ID。
调用 init
,传入获取到的 App ID,即可初始化声网引擎。
你也可以根据需求,在初始化时注册想要监听的回调事件。如注册用户加入频道和离开频道的回调。
// 初始化声网引擎。需将 YOUR_APPID 替换为你的声网 App ID。
agora.init("YOUR_APPID");
// 注册回调。
initAgoraEvents: function () {
if (agora) {
agora.on('joinChannelSuccess', this.onJoinChannelSuccess, this);
agora.on('leaveChannel', this.onLeaveChannel, this);
agora.on('warning', this.onWarning, this);
agora.on('error', this.onError, this);
agora.on('userJoined', this.onUserJoined, this);
agora.on('userOffline', this.onUserOffline, this);
agora.on('clientRoleChanged', this.onClientRoleChanged, this);
}
}
初始化结束后,调用 setChannelProfile
,将频道场景设为互动直播。
如果想切换为其他场景,需要先调用 release
释放声网引擎,然后调用 init
重新初始化声网引擎,再调用 setChannelProfile
设置新的频道场景。
agora.setChannelProfile(CHANNEL_PROFILE_TYPE.CHANNEL_PROFILE_LIVE_BROADCASTING);
互动直播频道有两种用户角色:主播和观众,其中默认的角色为观众。设置频道场景为互动直播后,你可以在 app 中参考如下步骤设置用户角色:
setClientRole
,然后使用用户选择的角色进行传参注意,互动直播频道内的用户只能听到主播的声音。加入频道后,如果你想切换用户角色,也可以调用 setClientRole
。
agora.setClientRole(CLIENT_ROLE_TYPE.CLIENT_ROLE_BROADCASTER);
完成设置角色后,你就可以调用 joinChannel
加入频道。
在 joinChannel
中你需要将 YOUR_TOKEN
替换成你自己生成的 Token。
// 对于 v3.1.2 之前的 SDK,如果频道中有声网 Web SDK,需调用该方法开启声网 Cocos Creator SDK 和声网 Web SDK 互通。
// v3.1.2 及之后的 SDK 在通信和互动直播场景下均自动开启了与声网 Web SDK 的互通,无需调用该方法。
agora.enableWebSdkInteroperability(true);
// 使用 Token 加入频道。
agora.joinChannel("YOUR_TOKEN", “channel5”, "Extra Optional Data", 0);
根据场景需要,如结束直播、关闭 app 或 app 切换至后台时,调用 leaveChannel
离开当前直播频道。
agora.leaveChannel();
离开频道后,如果你想退出应用或者释放声网引擎的内存,需调用 release
方法销毁声网引擎。
agora.release();
我们建议你在连接 Android 或 iOS 真机后,编译并运行项目。详见通过编辑器编译和运行。
当成功开始音频互动直播时,观众可以听到主播的声音。
Q: 我设置了正确的发布路径,为什么收到了 xxx.o:No such file or directory
报错?
A: 导致该错误的原因是发布路径太长,你需要缩短发布路径,例如将发布路径修改为磁盘根目录下。
我们在 GitHub 上提供一个开源的语音通话示例项目 Agora-Cocos-Quickstart/CocosCreator,你可以结合该示例项目与本文示例代码实现音频互动直播。