logo
当前页

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

准备环境

在开始集成音视频 UIKit 前,请确保开发环境满足以下要求:

  • Xcode 15.0 或以上版本。
  • iOS 12.0 或以上版本且支持音视频的 iOS 设备。
  • iOS 设备已经连接到 Internet。

前提条件

添加 ZegoUIKitPrebuiltCall 为依赖项

  1. 打开终端,前往您项目的根目录,并运行以下命令创建 podfile 文件:
    pod init
  2. 编辑 Podfile 文件,添加基本依赖项:
    pod 'ZegoUIKitPrebuiltCall'
    pod 'ZegoUIKitSignalingPlugin'
    pod 'ZegoUIKitAppleCallKitPlugin'
  3. 在终端中运行以下命令,使用 Cocoapods 下载所有必需的依赖项和 SDK:
    pod install

集成呼叫邀请功能

初始化呼叫邀请服务

在您的 App 启动时,调用init方法,并为连接音视频通话服务指定 userIDuserName

说明

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 类参数

参数类型是否必需描述
incomingCallRingtoneString用于设置接收呼叫邀请时的铃声。
outgoingCallRingtoneString用于设置发送呼叫邀请时的铃声。
showDeclineButtonBooltrue用于设置拒绝按钮的显示、隐藏。
notifyWhenAppRunningInBackgroundOrQuitBool当 App 在后台运行或用户已退出 App 时,如果不需要接收呼叫邀请通知,请将 notifyWhenAppRunningInBackgroundOrQuit 设置为false。
isSandboxEnvironmentBool是否为沙盒环境,默认值为 true。如需将您的应用程序发布到 TestFlight 或 App Store,请在开始构建之前将 isSandboxEnvironment 设置为 false。如需进行本地调试,请将其设置为 true。当 notifyWhenAppRunningInBackgroundOrQuitfalse 时,请忽略此设置。
certificateIndexInt如需使用同一个 AppID 实现两个不同工程之间的离线推送互通,请在 [ZEGO 控制台] 需要配置此字段,传入适用于当前项目的离线推送证书。
translationTextZegotranslationText使用此属性修改 UI 文本。有关详细信息,请参见 基础功能
videoConfigZegoPrebuiltCallVideoConfig.PRESET_360P用于配置推拉流分辨率。

ZegoUIKitPrebuiltCallInvitationService 类参数

参数类型是否必需描述
appIDString您从 ZEGOC 控制台 获取的AppID。
appSignString您从 ZEGOC 控制台 获取的AppSign。
userIDStringuserID 可以是电话号码或您用户系统中的用户ID。userID 只能包含数字、字母和下划线(_)。
userNameStringuserName可以是任意字符或您自己的用户系统中的用户名。
configZegoUIKitPrebuiltCallInvitationConfig这可以用来设置呼叫邀请相关的配置。

添加呼叫邀请按钮

您可以自定义 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 类参数

参数&nbsp类型必填描述
inviteeListArray被叫用户列表。必须包含 userID 和 userName。例如:[{ userID: inviteeID, userName: inviteeName }]
typeint如果type设置为ZegoInvitationType.videoCall.rawValue,则按下按钮时进行视频通话。如果设置为其他值,则进行语音通话。
resourceIDStringNoresourceID 可以指定离线呼叫邀请的铃声,必须设置为与 ZEGO 管理控制台 中的 resourceID 相同的值。这只在notifyWhenAppRunningInBackgroundOrQuit为true时生效
timeoutUInt32超时持续时间,默认为 60 秒。

如需了解更多参数,请查看 基础功能

现在,您可以通过简单点击设置的按钮发起呼叫邀请。

自定义呼叫按钮

如果用户不想使用CallKit内部的ZegoSendCallInvitationButton 按钮,需要使用自定义的按钮,CallKit 内部提供了发起呼叫的方法 此功能 2.12.0 以后的版本才支持。

  1. 编辑 Podfile 文件,添加基本依赖项:
    pod 'ZegoUIKitPrebuiltCall' '>= 2.12.1'
  2. 在终端中运行以下命令,使用 Cocoapods 下载所有必需的依赖项和 SDK:
    pod install
  3. 在自定义的音、视频通话按钮的点击事件中调用以下方法:
    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

定义
  /// 主动发起音、视频呼叫通话
  /// - 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 即可在设备上运行和测试您的应用程序。

相关指南

资源

常见问题

Previous

快速开始

Next

概览