您可以 下载 安装我们的 App 体验实时音视频通话的效果。
主动呼叫 | 被叫接听 |
---|---|
![]() |
![]() |
注意:为方便您快速实现音视频通话功能,我们对 TUICalling 组件进行了改造,通话 UI 在 TUICalling 组件内部实现,您可以无需关注 UI。
TestVideoCall
,单击 创建。注意:本功能同时使用了腾讯云 实时音视频 TRTC 和 即时通信 IM 两个基础 PaaS 服务,开通实时音视频后会同步开通即时通信 IM 服务。 即时通信 IM 属于增值服务,详细计费规则请参见 即时通信 IM 价格说明。
单击进入 TUICalling,Clone 或者下载源码。
进入修改配置页,根据您下载的源码包,选择相应的开发环境。
找到并打开 iOS/Example/Debug/GenerateTestUserSig.swift
文件。
设置 GenerateTestUserSig.swift
文件中的相关参数:
粘贴完成后,单击 已复制粘贴,下一步 即创建成功。
编译完成后,单击 回到控制台概览 即可。
注意:
- 本文提到的生成 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通 App 和功能调试。
- 正确的 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig。
Xcode(11.0及以上的版本)打开源码工程 TUICalling/Example/TUICallingApp.xcworkspace
,单击 运行 即可开始调试本 App。
注意:体验应用至少需要两台设备。
源码 文件夹 Source
中包含三个子文件夹 ui、model 和 Service,其中 Service 文件夹中包含了我们对外暴露的开源组件 TUICallingManager,您可以在 TUICallingManager.h
文件中看到该组件提供的接口函数。
您直接使用开源组件 TUICalling 的TUICallingManager即可轻松实现音视频通话功能,而无需再自己实现复杂的通话UI界面和逻辑。
通话组件 TRTCCalling 依赖 TRTC SDK 和 IM SDK,您可以按照如下步骤将两个 SDK 集成到项目中。
方法一:通过 cocoapods 仓库依赖
pod 'TXIMSDK_iOS'
pod 'TXLiteAVSDK_TRTC'
方法二:通过本地依赖
如果您的开发环境访问 cocoapods 仓库较慢,可以直接下载 ZIP 包,并按照集成文档手动集成到您的工程中。
SDK | 下载页面 | 集成指引 |
---|---|---|
TRTC SDK | DOWNLOAD | 集成文档 |
IM SDK | DOWNLOAD | 集成文档 |
在 info.plist 文件中需要添加 Privacy - Camera Usage Description
, Privacy - Microphone Usage Description
申请摄像头和麦克风权限。
通过 cocoapods 导入组件,具体步骤如下:
Source
、Resources
、TXAppBasic
文件夹,TUICalling.podspec
文件拷贝到您的工程目录下。Podfile
文件中添加以下依赖。之后执行 pod install
命令,完成导入。pod 'TXAppBasic', :path => "../TXAppBasic/"
pod 'TXLiteAVSDK_TRTC'
pod 'TUICalling', :path => "../", :subspecs => ["TRTC"]
TUICallingManager.sharedInstance()
进行组件初始化。TUILogin.initWithSdkAppID(SDKAPPID)
进行登录初始化。TUILogin.login(userId, userSig)
完成组件的登录,其中几个关键参数的填写请参考下表:参数名 | 作用 |
---|---|
sdkAppID | 您可以在 实时音视频控制台 中查看 SDKAppID。 |
userId | 当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。建议结合业务实际账号体系自行设置。 |
userSig | 腾讯云设计的一种安全保护签名,计算方式请参考 如何计算及使用 UserSig。 |
// 组件初始化
TUICallingManager.sharedInstance();
// 登录
TUILogin.initWithSdkAppID(SDKAPPID)
TUILogin.login(userId, userSig) {
print("login success")
} fail: { code, errorDes in
print("login failed, code:\(code), error: \(errorDes ?? "nil")")
}
call();
方法发起通话的请求, 并传入用户 ID数组(userIDs)和通话类型(type),通话类型参数传入.audio
(音频通话)或者.video
(视频通话)。如果用户 ID数组(userIDs)只有1个 userID 时视为单人通话,如果用户 ID 数组(userIDs)有多个 userID 时(>=2)视为多人通话。// 1. 注册监听器
TUICallingManager.shareInstance().setCallingListener(listener: TUICallingListerner())
// 2. 设置是否自定义页面(默认关)
TUICallingManager.shareInstance().enableCustomViewRoute(enable: true)
// 3. 实现监听器回调方法
public func shouldShowOnCallView() -> Bool {
return true;
}
public func callStart(userIDs: [String], type: TUICallingType, role: TUICallingRole, viewController: UIViewController?) { if let vc = viewController {
callingVC = vc;
vc.modalPresentationStyle = .fullScreen
if var topController = UIApplication.shared.keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
if let navigationVC = topController as? UINavigationController {
if navigationVC.viewControllers.contains(self) {
present(vc, animated: false, completion: nil)
} else {
navigationVC.popToRootViewController(animated: false)
navigationVC.pushViewController(self, animated: false)
navigationVC.present(vc, animated: false, completion: nil)
}
} else {
topController.present(vc, animated: false, completion: nil)
}
}
}
}
public func callEnd(userIDs: [String], type: TUICallingType, role: TUICallingRole, totalTime: Float) {
callingVC.dismiss(animated: true, completion: nil)
}
public func onCallEvent(event: TUICallingEvent, type: TUICallingType, role: TUICallingRole, message: String) {
}
// 4.拨打电话
TUICallingManager.shareInstance().call(userIDs, .video)
说明:如果您的业务定位是在线客服等不需要离线接听功能的场景,那么完成上述 步骤1 - 步骤5 的对接即可。但如果您的业务定位是社交场景,建议实现离线接听。
IM SDK 支持离线推送,您需要进行相应的设置才能达到可用标准。
TUICalling 组件的 API 接口列表如下:
接口函数 | 接口功能 |
---|---|
call | C2C 邀请通话 |
receiveAPNSCalled | 作为被邀请方接听来电 |
setCallingListener | 设置监听器 |
setCallingBell | 设置铃声(建议在30s以内) |
enableMuteMode | 开启静音模式 |
enableCustomViewRoute | 开启自定义视图, 开启后,会在呼叫/被叫开始回调中,接收到CallingView的实例,由开发者自行决定展示方式。注意:必须全屏或者与屏幕等比例展示,否则会有展示异常 |
本页内容是否解决了您的问题?