实时语音通话能够拉近人与人之间的距离,为用户提供沉浸式的交流体验,帮助你的 app 提高用户黏性。
本文介绍如何通过少量代码集成声网音频 SDK 并调用 API,在你的应用中实现高质量、低延迟的语音通话功能。
下图展示在 app 中集成声网语音通话的基本工作流程:
如图所示,实现语音通话的步骤如下:
joinChannel
创建并加入频道。使用同一频道名称的 app 客户端默认加入同一频道。App 客户端加入频道需要以下信息:
本节介绍如何创建项目,并将声网 C# SDK 集成至你的项目中。
参考以下步骤创建一个 Windows 项目。若已有 Windows 项目,直接查看集成 SDK。
根据你的 Windows Forms App 类型,选择对应的方式将 agora_rtc_sdk
添加到项目中。
.net core
类型
agora_rtc_sdk nuget
包引用。在 Solution Explorer 中右键 Dependencies,点击 Manage Nuget Packages > Browse,输入 agora_rtc_sdk
,选择最新稳定版的 SDK,然后点击安装将 SDK 添加到项目中。.net framework
类型
agora_rtc_sdk nuget
包引用。在 Solution Explorer 中右键 References,点击 Manage Nuget Packages > Browse,输入 agora_rtc_sdk
,选择最新稳定版的 SDK,然后点击安装将 SDK 添加到项目中。本节介绍如何实现语音通话。语音通话的 API 调用时序见下图:
根据场景需要,为你的项目创建视频通话的用户界面。若已有用户界面,可以直接查看使用域名。
如果你想实现一个语音通话,你可以添加一个结束通话按钮的 UI 元素。
输入如下行引入声网 SDK:
using agora.rtc;
由于 C# 基于 C++ 封装,因此需要在代码中基于 IAgoraRtcEngineEventHandler
派生一个 AgoraRtcEventHandler
类,用来管理事件回调:
class AgoraRtcEventHandler : IAgoraRtcEngineEventHandler
{
public AgoraRtcEventHandler()
{
}
};
在调用其他声网 API 前,需要创建并初始化 IAgoraRtcEngine
对象。
调用 CreateAgoraRtcEngine
和 Initialize
方法,传入获取到的 App ID,即可初始化 IAgoraRtcEngine
。
你还可以根据场景需要,在初始化时注册想要监听的回调事件,如注册用户加入频道和离开频道的回调。
// 声明变量
IAgoraRtcEngine rtc_engine_ = null;
IAgoraRtcEngineEventHandler event_handler_ = null;
if (null == rtc_engine_)
{
// 创建 rtc engine
rtc_engine_ = AgoraRtcEngine.CreateAgoraRtcEngine();
}
RtcEngineContext context = new RtcEngineContext(appId);
// 初始化 rtc engine
int ret = rtc_engine_.Initialize(context);
event_handler_ = new AgoraRtcEventHandler();
// 初始化事件回调
rtc_engine_.InitEventHandler(event_handler_);
完成初始化设置后,你就可以调用 JoinChannel
方法加入频道。你需要在该方法中传入如下参数:
channelName
: 传入能标识频道的频道 ID。输入频道 ID 相同的用户会进入同一个频道。
token
:传入用于鉴权的 Token,可设为如下一个值:
token
设为 ""。uid
: 本地用户的 ID。数据类型为整型,且频道内每个用户的 uid
必须是唯一的。若将 uid
设为 0,则 SDK 会自动分配一个 uid
,并在 OnJoinChannelSuccess
回调中报告。mute
方法实现。rtc_engine_.JoinChannel("", "testChannelId","", 0, new ChannelMediaOptions(true, true, true, true));
根据场景需要,如结束通话、关闭 App 或 App 切换至后台时,调用 LeaveChannel
离开当前通话频道。
rtc_engine_.LeaveChannel();
编译生成应用程序后,将对应文加下的依赖库拷贝到运行目录下:
.netcore
64 位的 app,需要拷贝 netCore/x86_64
下所有的依赖库。.netframework
32 位的 app,需要拷贝 netFramework/x86
下所有的依赖库。你可以在 Windows 设备中运行此项目。当你成功开始语音通话时,你可以听到远端用户的声音。
声网在 GitHub 上提供开源的实时音频通话示例项目 JoinChannelAudio。在实现相关功能前,你可以下载并查看源代码。