logo
当前页

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

准备环境

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

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

前提条件

添加 ZegoUIKitPrebuiltCall 为依赖项

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

集成呼叫邀请功能

初始化呼叫邀请服务

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

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
Copied!
#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
Copied!

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。

  • 设置一个用于发起语音通话的按钮。
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
Copied!
  @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
Copied!
  • 设置一个用于发起视频通话的按钮。
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
Copied!
  @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
Copied!

ZegoSendCallInvitationButton 类参数

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

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

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

自定义呼叫按钮

API

运行和测试

至此,您已经完成了所有步骤!

只需在 XCode 中点击 Run 即可在设备上运行和测试您的应用程序。

相关指南

资源

常见问题

Previous

快速开始

Next

概览