快速开始(包含呼叫邀请)
准备环境
在开始集成音视频 UIKit 前,请确保开发环境满足以下要求:
- Xcode 15.0 或以上版本。
- iOS 12.0 或以上版本且支持音视频的 iOS 设备。
- iOS 设备已经连接到 Internet。
前提条件
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
- 联系 ZEGO 技术支持,开通 UIKit 相关服务。
添加 ZegoUIKitPrebuiltCall 为依赖项
- 打开终端,前往您项目的根目录,并运行以下命令创建
podfile
文件:Untitledpod init
1 - 编辑
Podfile
文件,添加基本依赖项:Untitledpod 'ZegoUIKitPrebuiltCall' pod 'ZegoUIKitSignalingPlugin' pod 'ZegoUIKitAppleCallKitPlugin'
1 - 在终端中运行以下命令,使用 Cocoapods 下载所有必需的依赖项和 SDK:
Untitled
pod install
1
集成呼叫邀请功能
初始化呼叫邀请服务
在您的 App 启动时,调用init
方法,并为连接音视频通话服务指定 userID
和 userName
。
Note
UIKit 默认语言为英文,如需修改为中文,请修改 ZegoUIKitPrebuiltCallInvitationConfig.translationText
。
swift
objc
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)
}
}
1
#import "ViewController.h"
@import ZegoUIKit;
@import ZegoUIKitPrebuiltCall;
@import ZegoUIKitSignalingPlugin;
@import ZegoPluginAdapter;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 从 ZEGO 的控制台获取您的 appID 和 appSign
// userID 只能包含数字、字母和'_'
// certificateIndex:信令组建证书校验方式
ZegoUIKitPrebuiltCallInvitationConfig *config = [[ZegoUIKitPrebuiltCallInvitationConfig alloc] initWithNotifyWhenAppRunningInBackgroundOrQuit:YES isSandboxEnvironment:YES certificateIndex:ZegoSignalingPluginMultiCertificateFirstCertificate];
// 修改语言为中文
ZegoTranslationText *text = [[ZegoTranslationText alloc] initWithLanguage:ZegoUIKitLanguageCHS];
config.translationText = text;
[[ZegoUIKitPrebuiltCallInvitationService shared] initWithAppID:YOUR_APPID appSign:YOUR_APP_SIGN userID:YOUR_USER_ID userName:YOUR_USER_NAME config:config];
}
1
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。
- 设置一个用于发起语音通话的按钮。
swift
objc
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)
}
}
1
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建语音通话邀请按钮
ZegoUIKitUser *user = [[ZegoUIKitUser alloc] init:@"用户id" userName:@"用户昵称" isCameraOn:NO isMicrophoneOn:YES];
ZegoSendCallInvitationButton * sendVoiceCallButton = [[ZegoSendCallInvitationButton alloc] init:ZegoInvitationTypeVoiceCall];
sendVoiceCallButton.frame = CGRectMake(100, 100, 100, 30);
[sendVoiceCallButton.setTitleColor([UIColor blueColor], for: UIControlState.normal];
[sendVoiceCallButton setText:@"语音"];
sendVoiceCallButton.resourceID = @"xxx" // 用于通话的离线通知
sendVoiceCallButton.inviteeList = @[user];
// 将按钮添加到您的视图中
[self.view addSubview:sendVoiceCallButton];
}
1
- 设置一个用于发起视频通话的按钮。
swift
objc
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)
}
}
1
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
ZegoUIKitUser *user = [[ZegoUIKitUser alloc] init:@"用户id" userName:@"用户昵称" isCameraOn:YES isMicrophoneOn:YES];
// 创建视频通话邀请按钮
ZegoSendCallInvitationButton.sendVideoCallButton = [[ZegoSendCallInvitationButton alloc] init:ZegoInvitationTypeVideoCall];
sendVideoCallButton.frame = CGRectMake(100, 100, 100, 30);
[sendVideoCallButton setText:@"视频"];
sendVideoCallButton.resourceID = @"xxx" // 用于通话的离线通知
sendVideoCallButton.inviteeList = @[user];
// 将按钮添加到您的视图中。
[self.view addSubview:sendVideoCallButton];
}
1
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 秒。 |
如需了解更多参数,请查看 基础功能。
现在,您可以通过简单点击设置的按钮发起呼叫邀请。
自定义呼叫按钮
API
运行和测试
至此,您已经完成了所有步骤!
只需在 XCode 中点击 Run 即可在设备上运行和测试您的应用程序。
相关指南
通话设置
资源
示例代码
获取完整示例代码。
常见问题
如何处理接入错误