iOS使用指南

通过阅读本文,您可以了解如何在iOS端接入AI实时互动音视频智能体。

源码说明

源码下载

下载地址请参见GitHub开源项目

源码结构

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

环境要求

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

  • CocoaPods 1.9.3 及以上版本

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

前提条件

已在您的服务端上开发了相关接口或直接部署提供的Server源码,搭建步骤请参见项目部署

跑通demo

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

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

  3. 打开工程文件AUIAICallExample.xcworkspace,修改包Id。

  4. 进入AUIAICallAgentConfig.swift文件,配置智能体Id及所在Region。

    // AUIAICallAgentConfig.swift
    // 配置智能体id 
    let VoiceAgentId = "你的语音通话智能体Id"
    let AvatarAgentId = "你的数字人通话智能体Id"
    let VisionAgentId = "你的视觉理解通话智能体Id"
    let ChatAgentId = "你的消息对话智能体Id"
    // 配置区域
    let Region = "cn-shanghai"

    地域名称

    Region Id

    华东1(杭州)

    cn-hangzhou

    华东2(上海)

    cn-shanghai

    华北2(北京)

    cn-beijing

    华南1(深圳)

    cn-shenzhen

    新加坡

    ap-southeast-1

  5. 完成智能体配置后,您可以通过以下两种方式来启动智能体:

    • 已部署AppServer: 如果你已经在您的服务端上部署了阿里云提供的AppServer源码,您还需要进入文件AUIAICallAppServer.swift,修改服务端域名。

      // AUIAICallAppServer.swift
      public let AICallServerDomain = "你的应用服务器域名"
    • 未部署AppServer:如果您还未部署AppServer源码,需要快速跑通Demo并体验智能体。那么您需要进入文件AUIAICallAuthTokenHelper.java,配置EnableDevelopToken参数,并从控制台拷贝智能体使用的ARTCApp IdAPP Key,在App端生成启动鉴权Token。

      说明

      该方法需在本地填写AppKey等敏感信息,仅适用于体验及开发阶段,不能用于线上发布,以防止因AppKey被盗取而导致的安全事故。

      // AUIAICallAuthTokenHelper.swift
      @objcMembers public class AUIAICallAuthTokenHelper: NSObject {
      
          // 设置为true,启动Develop模式
          private static let EnableDevelopToken: Bool = true     
          // 从控制台拷贝RTCAppId
          private static let RTCDevelopAppId: String = "智能体使用的RTCAppId"
          // 从控制台拷贝RTCAppKey
          private static let RTCDevelopAppKey: String = "智能体使用的RTCAppKey"
      
          ...
      }

      获取音视频ARTC应用的AppIdAppKey步骤如下:

      1. 前往智能媒体控制台,单击您创建好的智能体,进入智能体详情页面。

        image

      2. 单击RTC AppID,前往视频直播控制台,获取AppIdAppKey。

        image

  6. 选择"Example"Target 进行编译运行。

快速开发自己的AI通话功能

可通过以下几个步骤快速集成AUIAICall到您的APP中,让您的APP具备智能体音视频通话功能。

集成源码

  • 导入AUIAICall:仓库代码下载后,拷贝iOS文件夹到你的APP代码目录下,改名为AUIAICall,与您的Podfile文件在同一层级,可以删除ExampleAICallKit目录。

  • 修改Podfile,引入:

    • AliVCSDK_ARTC:适用于实时互动的音视频终端SDK,也可以使用:AliVCSDK_StandardAliVCSDK_InteractiveLive,具体集成方式,请参考iOS

    • ARTCAICallKit:AI实时互动通话场景SDK。

    • AUIFoundation:基础UI组件。

    • AUIAICall:AI通话场景UI组件源码。

    #需要iOS11.0及以上才能支持
    platform :ios, '11.0'
    
    target '你的App target' do
        # 根据自己的业务场景,集成合适的音视频终端SDK,支持:AliVCSDK_ARTC、AliVCSDK_Standard、AliVCSDK_InteractiveLive
        pod 'AliVCSDK_ARTC', '~> 7.4.0'
    
        # AI实时互动通话场景SDK
        pod 'ARTCAICallKit', '~> 2.7.0'
    
        # 基础UI组件源码
        pod 'AUIFoundation', :path => "./AUIAICall/AUIBaseKits/AUIFoundation/", :modular_headers => true
    
        # AI通话场景UI组件源码
        pod 'AUIAICall',  :path => "./AUIAICall/"
    end
    说明

    ARTC SDK版本请到SDK下载/集成最新适配版本号。

  • 执行pod install --repo-update

  • 源码集成完成

工程配置

  • 添加麦克风与摄像头权限,打开工程info.Plist,添加麦克风权限(NSMicrophoneUsageDescription)、摄像头权限(NSCameraUsageDescription) 和 相册权限(NSPhotoLibraryUsageDescription)。

  • 打开工程设置,在Signing & Capabilities中开启Background Modes,如果不开启后台模式,则需要自行处理在进入后台时结束通话。

源码配置

  • 已完成前提条件所需步骤。

  • 进入AUIAICallAppServer.swift文件,修改服务端域名。

    // AUIAICallAppServer.swift
    public let AICallServerDomain = "你的应用服务器域名"
    说明

    如果您还未部署AppServer,您可以使用App端生成鉴权Token的方式,快速测试并跑通Demo。详细内容,请参见未部署AppServer。

调用API

上述工作完成后,接下来可以根据自身的业务场景和交互,在您的APP其他模块或主页上通过组件接口启动AI通话,也可以根据自身的需求修改源码。

// 引入组件
import AUIAICall
import ARTCAICallKit
import AUIFoundation

// 检查是否开启麦克风权限
AVDeviceAuth.checkMicAuth { auth in
   if auth == false {
       return
   }

   // userId推荐使用你的App登录后的用户id
   let userId = "xxx"
   // 通过userId构建controller
   let controller = AUIAICallController(userId: userId)
   // 设置智能体Id,不能为nil
   controller.config.agentId = "xxx"
   // 设置通话的类型(语音、数字人或视觉理解),需要与AgentId的类型对应
   controller.config.agentType = agentType
   // agent所在的区域,不能为nil
   controller.config.region = "xx-xxx"
   // 创建通话ViewController
   let vc = AUIAICallViewController(controller)
   // 全屏方式打开通话界面
   vc.modalPresentationStyle = .fullScreen
   vc.modalTransitionStyle = .coverVertical
   vc.modalPresentationCapturesStatusBarAppearance = true
   self.present(vc, animated: true)
  }

常见问题

更多AUIKits问题咨询及使用说明,欢迎通过钉钉搜索群号106730016696,加入群聊联系我们。