iOS端快速接入

本文介绍iOS端快速接入音视频通话的操作步骤。

源码说明

前提条件

在实现音视频通话前需先开通并集成互动直播以及互动消息服务,请按照以下方式进行集成。

  • 开通视频直播服务

    请参照下述步骤开通视频直播服务,详细说明请参见开通与购买视频直播

    1. 登录视频直播产品详情页,单击立即开通,进入开通页面。

    2. 在视频直播开通页,选择计费方式按使用流量计费或按带宽峰值计费,勾选《视频直播服务协议》并单击立即开通,控制台即可使用。

  • 接入互动消息

    1. 创建互动消息应用,具体操作请参见创建应用

    2. 获取互动消息Token,请参考互动直播AppServer的获取IM建连的token和源码getNewImToken

  • 接入直播连麦

    1. 开通互动直播(原直播连麦),具体操作请参考文档直播连麦快速入门

    2. 获取互动直播Token,需调用getRtcAuthToken接口进行获取,实现原理参考Token鉴权。具体接口调用方式如下:

      1. 接口说明

        • 请求协议:HTTP/HTTPS

        • 请求Path:/api/v1/live/getRtcAuthToken

        • 是否需要授权:由客户自行决定

        • 请求Method:POST

        • 请求ContentType:JSON

      2. 请求参数

        名称

        类型

        是否必填

        示例值

        描述

        user_id

        String

        userid****

        用户ID,由用户自定义,支持数字、大小写字母、短划线(-)、下划线(_),不超过64个字符。

        room_id

        String

        deviceid****

        房间(或频道)ID,由用户自定义,支持数字、大小写字母、短划线(-)、下划线(_),不超过64个字符。主播和连麦观众需使用同一个房间号。

      3. 返回数据

        名称

        类型

        示例值

        描述

        code

        Integer

        200

        业务响应码。参考HTTP响应码。

        auth_token

        String

        a06afe07*******

        用于长连接建连的Token。

        timestamp

        Long

        1693967******

        当前时间戳。单位:秒。

      4. 示例

        请求示例

        {
            "user_id": "1234567890",
            "room_id": "fwfwqeqeqwewq"
        }

        正常返回示例

        {
          "code": 200,
          "auth_token": "a06afe07*******",
          "timestamp": 1693967******
        }

环境准备

  • Xcode 12.0及以上版本,推荐使用最新正式版本。

  • CocoaPods 1.9.3及以上版本。

  • 准备iOS 10.0及以上版本的真机。

源码下载

音视频通话当前为邀测阶段,您可加入音视频通话客户支持群(钉钉群号:36480010946)获取源码下载地址。

源码结构说明

├── iOS  // iOS平台的根目录
│   ├── AUICall.podspec                // pod描述文件
│   ├── Source                                    // 源代码文件
│   ├── Resources                                 // 资源文件
│   ├── Frameworks                                // 依赖AUIRoomEngine库
│   ├── Example                                   // Demo代码
│   ├── AUIBaseKits                               // 基础UI组件   
│   ├── README.md                                 // Readme

跑通Demo

  1. 源码下载后,进入Example目录。

  2. 在Example目录里执行命令pod install  --repo-update,自动安装依赖SDK。

  3. 打开工程文件AUICallExample.xcworkspace,修改包ID。

  4. 完成前提条件后,进入文件AUICallAppServer.swift,修改服务端域名。

    // AUICallAppServer.swift
    public class AUICallAppServer: NSObject {
        public static let serverDomain = "您的应用服务器域名"
        ...
    }
  5. 完成前提条件后,进入文件AUICallGlobalConfig.swift,修改互动直播应用appID

    // AUICallGlobalConfig.swift
    public class AUICallGlobalConfig: NSObject {
        
        // 正式
        public static let appID = "您的appID"
        public static let gslb = "https://gw.rtn.aliyuncs.com"
      
        public static let dimensions = CGSize(width: 360, height: 640)
        public static let frameRate = 15
    }
  6. 如果需要体验1v1通话,可以切换到AUICall1V1Example Target进行编译运行。

  7. 如果需要体验多人通话,可以切换到AUICallNVNExample Target进行编译运行。

快速开发通话功能

可通过以下几个步骤快速集成AUICall到您的App中,让您的App具备通话功能。

集成源码

  1. 导入AUICall:仓库代码下载后,拷贝iOS文件夹到您的App代码目录下,改名为AUICall,与您的Podfile文件在同一层级,可以删除Example目录。

  2. 修改您的Podfile,引入:

    • AliVCSDK_InteractiveLive:适用于互动直播的音视频终端SDK,也可以使用AliVCSDK_Standard,请参考iOS端

    • AUIFoundation:基础UI组件。

    • AUIMessage:互动消息组件。

    • AUICall:通话场景UI组件源码,根据自身的业务,可以选择1v1或NvN,也可以同时集成这两个模块。

    #需要iOS10.0及以上才能支持
    platform :ios, '10.0'
    
    target '您的App target' do
        # 根据自己的业务场景,集成合适的音视频终端SDK,支持:AliVCSDK_Standard、AliVCSDK_InteractiveLive
        # 如果您的App中还需要频短视频编辑功能,可以使用音视频终端全功能SDK(AliVCSDK_Standard),可以把本文件中的所有AliVCSDK_InteractiveLive替换为AliVCSDK_Standard
        pod 'AliVCSDK_InteractiveLive', '~> 6.7.0'
    
        # 基础UI组件
        pod 'AUIFoundation/All', :path => "./AUICall/AUIBaseKits/AUIFoundation/"
    
        # 互动消息组件
        pod 'AUIMessage/AliVCIM', :path => "./AUICall/AUIBaseKits/AUIMessage/"
        
        # 集成RoomEngineSDK
        pod 'AUICall/RoomEngine_Lib/AliVCSDK_InteractiveLive', :path => './AUICall/'
        # 通话组件,集成1v1通话模块
        pod 'AUICall/1V1',  :path => "./AUICall/"
        # 通话组件,集成多人通话模块
        pod 'AUICall/NVN',  :path => "./AUICall/"
    end
  3. 执行pod install --repo-update

  4. 源码集成完成。

工程配置

  • 打开工程info.Plist,添加NSCameraUsageDescription和NSMicrophoneUsageDescription权限。

  • 打开工程设置,在Signing & Capabilities中开启Background Modes。

源码配置

  • 完成前提条件后,进入文件AUICallAppServer.swift,修改服务端域名。

    // AUICallAppServer.swift
    public class AUICallAppServer: NSObject {
        public static let serverDomain = "您的应用服务器域名"
        ...
    }
  • 完成前提条件后,进入文件AUICallGlobalConfig.swift,修改互动直播应用appID。

    // AUICallGlobalConfig.swift
    public class AUICallGlobalConfig: NSObject {
        
        // 正式
        public static let appID = "您的appID"
        public static let gslb = "https://gw.rtn.aliyuncs.com"
    
        public static let dimensions = CGSize(width: 360, height: 640)
        public static let frameRate = 15
    }

调用API

前面工作完成后,接下来可以根据自身的业务场景和交互,可以在App其他模块或主页上通过通话组件接口快速实现会议通话功能,也可以根据自身的需求修改源码。

  • 1V1通话场景

    // 登录
    AUICall1V1Manager.defaultManager.tryLogin(loginUser: user) { success in
        if success {
            // 成功
        }
        else {
            // 失败
        }
    }
    
    // 登出
    AUICall1V1Manager.defaultManager.logout()
    
    // 呼叫
    AUICall1V1Manager.defaultManager.startCall(mode: .video, destUser: user)
  • 多人通话/会议场景

    // 登录
    AUICallNVNManager.defaultManager.tryLogin(loginUser: user) { success in
        if success {
            // 成功
        }
        else {
            // 失败
        }
    }
    
    // 登出
    AUICallNVNManager.defaultManager.logout()
    
    // 创建通话房间
    AUICallNVNManager.defaultManager.createCall(roomName: nil)
    
    // 创建通话房间并进入
    AUICallNVNManager.defaultManager.startCall(userConfig: userConfig, roomName: nil, currVC: self) {
      // 成功进入
    }
    
    // 进入通话房间
    AUICallNVNManager.defaultManager.joinCall(room: room, userConfig: userConfig, currVC: self) {
      // 成功进入
    }

基于AUIRoomEngine开发高级功能

AUIRoomEngine是一套通用业务解决方案的模型与API,主要针对的是基于音视频在线实时通信的业务场景,如会议、课堂、通话等。主要目的是为了降低在对接上述业务场景开发时的复杂度,沉淀通用业务技术接口,提升业务开发效率。

AUIRoomEngine基于通话会议场景提供的是无UI细粒度的接口,AUICall基于AUIRoomEngine的API实现包含UI交互的通话功能,如果有更多高级功能的开发,可以基于AUICall进行二次开发,直接调用AUIRoomEngine的API来完成。

相关API

  • AUIRoomEngine

  • AUIRoomEngineObserver

详细接口文档请参见iOS端API参考

问题咨询

更多问题咨询及使用说明,请搜索钉钉群(36480010946)加入音视频通话客户支持群联系我们。