快速开始(包含呼叫邀请)

准备环境
在开始集成音视频 UIKit 前,请确保开发环境满足以下要求:
- Xcode 15.0 或以上版本。
- iOS 12.0 或以上版本且支持音视频的 iOS 设备。
- iOS 设备已经连接到 Internet。
前提条件
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
- 联系 ZEGO 技术支持,开通 UIKit 相关服务。
添加 ZegoUIKitPrebuiltCall 为依赖项
- 打开终端,前往您项目的根目录,并运行以下命令创建
podfile
文件:pod init
- 编辑
Podfile
文件,添加基本依赖项:pod 'ZegoUIKitPrebuiltCall' pod 'ZegoUIKitSignalingPlugin' pod 'ZegoUIKitAppleCallKitPlugin'
- 在终端中运行以下命令,使用 Cocoapods 下载所有必需的依赖项和 SDK:
pod install
集成呼叫邀请功能
初始化呼叫邀请服务
在您的 App 启动时,调用init
方法,并为连接音视频通话服务指定 userID
和 userName
。
说明
UIKit 默认语言为英文,如需修改为中文,请修改 ZegoUIKitPrebuiltCallInvitationConfig.translationText
。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 从 ZEGO 的控制台获取您的 appID 和 appSign
// userID 只能包含数字、字母和'_'
let config = ZegoUIKitPrebuiltCallInvitationConfig(notifyWhenAppRunningInBackgroundOrQuit: true)
// 修改语言为中文
config.translationText = ZegoTranslationText(language: .CHS)
ZegoUIKitPrebuiltCallInvitationService.shared.initWithAppID(appID: YOUR_APPID, appSign: YOUR_APP_SIGN, userID:YOUR_USER_ID, userName:YOUR_USER_NAME, config: config, callback: { errorCode, message in
})
}
}
ZegoUIKitPrebuiltCallInvitationConfig 类参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
incomingCallRingtone | String | 否 | 用于设置接收呼叫邀请时的铃声。 |
outgoingCallRingtone | String | 否 | 用于设置发送呼叫邀请时的铃声。 |
showDeclineButton | Bool | true | 用于设置拒绝按钮的显示、隐藏。 |
notifyWhenAppRunningInBackgroundOrQuit | Bool | 否 | 当 App 在后台运行或用户已退出 App 时,如果不需要接收呼叫邀请通知,请将 notifyWhenAppRunningInBackgroundOrQuit 设置为false。 |
isSandboxEnvironment | Bool | 否 | 是否为沙盒环境,默认值为 true 。如需将您的应用程序发布到 TestFlight 或 App Store,请在开始构建之前将 isSandboxEnvironment 设置为 false 。如需进行本地调试,请将其设置为 true 。当 notifyWhenAppRunningInBackgroundOrQuit 为 false 时,请忽略此设置。 |
certificateIndex | Int | 否 | 如需使用同一个 AppID 实现两个不同工程之间的离线推送互通,请在 [ZEGO 控制台] 需要配置此字段,传入适用于当前项目的离线推送证书。 |
translationText | ZegotranslationText | 否 | 使用此属性修改 UI 文本。有关详细信息,请参见 基础功能。 |
videoConfig | ZegoPrebuiltCallVideoConfig | .PRESET_360P | 用于配置推拉流分辨率。 |
ZegoUIKitPrebuiltCallInvitationService 类参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
appID | String | 是 | 您从 ZEGOC 控制台 获取的AppID。 |
appSign | String | 是 | 您从 ZEGOC 控制台 获取的AppSign。 |
userID | String | 是 | userID 可以是电话号码或您用户系统中的用户ID。userID 只能包含数字、字母和下划线(_)。 |
userName | String | 是 | userName 可以是任意字符或您自己的用户系统中的用户名。 |
config | ZegoUIKitPrebuiltCallInvitationConfig | 是 | 这可以用来设置呼叫邀请相关的配置。 |
添加呼叫邀请按钮
您可以自定义 ZegoSendCallInvitationButton
的位置,传入您想要呼叫的用户的ID。
- 设置一个用于发起语音通话的按钮。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建语音通话邀请按钮
let callTargetUser: ZegoUIKitUser = ZegoUIKitUser.init("目标用户 ID", "目标用户名")
let sendVoiceCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.voiceCall.rawValue)
sendVoiceCallButton.text = "语音"
sendVoiceCallButton.resourceID = "xxx" // 用于通话的离线通知
sendVoiceCallButton.setTitleColor(UIColor.blue, for: .normal)
sendVoiceCallButton.inviteeList.append(callTargetUser)
sendVoiceCallButton.frame = CGRect.init(x: 100, y: 100, width: 100, height: 30)
// 将按钮添加到您的视图中
self.view.addSubview(sendVoiceCallButton)
}
}
- 设置一个用于发起视频通话的按钮。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建视频通话邀请按钮
let callTargetUser: ZegoUIKitUser = ZegoUIKitUser.init("目标用户ID", "目标用户名")
let sendVideoCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.videoCall.rawValue)
sendVideoCallButton.text = "视频"
sendVideoCallButton.setTitleColor(UIColor.blue, for: .normal)
sendVideoCallButton.resourceID = "xxx" // 用于通话的离线通知
sendVideoCallButton.frame = CGRect.init(x: 100, y: 100, width: 100, height: 30)
sendVideoCallButton.inviteeList.append(callTargetUser)
// 将按钮添加到您的视图中。
self.view.addSubview(sendVideoCallButton)
}
}
ZegoSendCallInvitationButton 类参数
参数  | 类型 | 必填 | 描述 |
---|---|---|---|
inviteeList | Array | 是 | 被叫用户列表。必须包含 userID 和 userName。例如:[{ userID: inviteeID, userName: inviteeName }] |
type | int | 是 | 如果type 设置为ZegoInvitationType.videoCall.rawValue ,则按下按钮时进行视频通话。如果设置为其他值,则进行语音通话。 |
resourceID | String | No | resourceID 可以指定离线呼叫邀请的铃声,必须设置为与 ZEGO 管理控制台 中的 resourceID 相同的值。这只在notifyWhenAppRunningInBackgroundOrQuit为true时生效 |
timeout | UInt32 | 否 | 超时持续时间,默认为 60 秒。 |
如需了解更多参数,请查看 基础功能。
现在,您可以通过简单点击设置的按钮发起呼叫邀请。
自定义呼叫按钮
自定义呼叫按钮
如果用户不想使用CallKit内部的ZegoSendCallInvitationButton 按钮,需要使用自定义的按钮,CallKit 内部提供了发起呼叫的方法 此功能 2.12.0 以后的版本才支持。
- 编辑
Podfile
文件,添加基本依赖项:pod 'ZegoUIKitPrebuiltCall' '>= 2.12.1'
- 在终端中运行以下命令,使用 Cocoapods 下载所有必需的依赖项和 SDK:
pod install
- 在自定义的音、视频通话按钮的点击事件中调用以下方法:
let user: ZegoPluginCallUser = ZegoPluginCallUser(userID: "userID", userName: "userName") let notificationConfig: ZegoPluginCallNotificationConfig = ZegoSignalingPluginNotificationConfig(resourceID: "resourceID") ZegoPluginAdapter.callPlugin?.sendInvitationWithUIChange(invitees: [user], invitationType: type == .voiceCall ? .voiceCall : .videoCall, customData: "", timeout: 60, notificationConfig: notificationConfig), callback: { data in })
API
sendInvitationWithUIChange
定义
/// 主动发起音、视频呼叫通话
/// - Parameters:
/// - invitees: 邀请通话的用户list
/// - invitationType: 通话类型。语音、视频
/// - customData: 自定义数据
/// - timeout: 超时时间
/// - notificationConfig: 离线通知信息
/// - callback: 回调callback
func sendInvitationWithUIChange( invitees:[ZegoPluginCallUser],invitationType: ZegoPluginCallType,
customData: String, timeout: Int, notificationConfig: ZegoSignalingPluginNotificationConfig,
callback: ZegoPluginCallback?) {
}
运行和测试
至此,您已经完成了所有步骤!
只需在 XCode 中点击 Run 即可在设备上运行和测试您的应用程序。
相关指南
通话设置
资源
示例代码
获取完整示例代码。
常见问题
如何处理接入错误