すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Services:iOS ユーザーガイド

最終更新日:Mar 10, 2026

このトピックでは、リアルタイム対話型 AI の音声・動画エージェントを iOS アプリケーションに統合する方法について説明します。

ソースコードの説明

ソースコードのダウンロード

ソースコードはGitHub のオープンソースプロジェクトからダウンロードできます。

ソースコードの構造

├── iOS  // iOS プラットフォームのルートディレクトリ
│   ├── AUIAICall.podspec                // Pod 記述ファイル
│   ├── Source                                    // ソースコードファイル
│   ├── Resources                                 // リソースファイル
│   ├── Example                                   // デモコード
│   ├── AUIBaseKits                               // 基本的な UI コンポーネント 
│   ├── README.md                                 // Readme  

環境要件

  • Xcode 16.0 以降。最新の公式リリース版の使用を推奨します。

  • CocoaPods 1.9.3 以降。

  • iOS 11.0 以降を実行する物理 iOS デバイス。

前提条件

サーバー側で関連する API オペレーションを開発するか、提供されているサーバーのソースコードをデプロイします。詳細については、「プロジェクトのデプロイ」をご参照ください。

デモの実行

  1. ソースコードをダウンロードした後、Example フォルダに移動します。

  2. Example フォルダで pod install --repo-update コマンドを実行して、SDK の依存関係をインストールします。

  3. AUIAICallExample.xcworkspace プロジェクトファイルを開き、パッケージ ID を変更します。

  4. エージェントシナリオ設定ファイル /Resources/AUIAIMain.bundle/agent_scenes.json を開くことができます。エージェントタイプに基づいてエージェント ID とそのリージョンを入力します。たとえば、音声エージェントを設定する場合、agent_typeVoiceAgent である Scenes ノードを見つけ、agent_idregion フィールドの値を入力します。

    // 以下の例は、音声通話エージェントの設定方法を示しています
        {
          "agent_type": "VoiceAgent",
          "scenes": [
            {
              "agent_id": "<Voice call agent ID>",
              "region": "<Region where the voice call agent ID is located>",
              "title": "Voice Call",
              "tags": [],
              "limit_seconds": 1800,
              "description": "",
              "asr_model_id": "xxx",
              "tts_model_id": "xxx",
              "voice_styles": []
            }
          ]
        }
    説明

    1 つのエージェントタイプのみをテストする場合は、そのエージェントタイプの agent_idregion フィールドの値を設定するだけで済みます。region の値については、次の表の「リージョン ID」列をご参照ください。

    リージョン名

    リージョン ID

    中国 (杭州)

    cn-hangzhou

    中国 (上海)

    cn-shanghai

    中国 (北京)

    cn-beijing

    中国 (深セン)

    cn-shenzhen

    シンガポール

    ap-southeast-1

  5. エージェントを設定した後、次の 2 つのメソッドのいずれかを使用して起動します。

    • AppServer がデプロイされている場合: Alibaba Cloud が提供する AppServer のソースコードをサーバーにデプロイしている場合は、AUIAICallAppServer.swift ファイルに移動し、サーバー側のドメイン名を設定します。

      // AUIAICallAppServer.swift
      public let AICallServerDomain = "ご利用のアプリケーションサーバーのドメイン名"
    • AppServer がデプロイされていない場合: AppServer のソースコードをデプロイしておらず、デモを迅速に実行してエージェントをテストしたい場合は、AUIAICallAuthTokenHelper.swift ファイルに移動します。このファイルで EnableDevelopToken パラメーターを設定し、コンソールから ARTC アプリケーションの App ID と App Key を取得し、アプリケーションで認証トークンを生成します。

      説明

      このメソッドでは、AppKey やその他の機密情報をアプリケーションに埋め込む必要があります。これはテストおよび開発専用です。本番環境ではこのメソッドを使用しないでください。クライアント側で AppKey を公開すると、深刻なセキュリティリスクが生じます。

      // AUIAICallAuthTokenHelper.swift
      @objcMembers public class AUIAICallAuthTokenHelper: NSObject {
      
          // true に設定して開発モードを有効にします
          private static let EnableDevelopToken: Bool = true     
          // コンソールから RTCAppId をコピーします
          private static let RTCDevelopAppId: String = "RTC AppId used by the agent"
          // コンソールから RTCAppKey をコピーします
          private static let RTCDevelopAppKey: String = "RTC AppKey used by the agent"
      
          ...
      }

      ARTC アプリケーションの AppID と AppKey を取得するには:

      1. IMS コンソールの AI Agents ページに移動します。エージェントをクリックして、エージェント詳細ページに移動します。

        image

      2. ARTC アプリケーション ID をクリックします。ApsaraVideo Live コンソールにリダイレクトされ、AppID と AppKey が表示されます。

        image

  6. Example ターゲットを選択し、プロジェクトをコンパイルして実行します。

独自の AI 通話機能のクイック開発

以下の手順に従って AUIAICall をアプリケーションに統合し、エージェントの音声・動画通話機能を有効にします。

ソースコードの統合

  • リポジトリをダウンロードした後、iOS フォルダをアプリケーションのコードディレクトリにコピーします。フォルダ名を AUIAICall に変更し、Podfile と同じ階層に配置してから、Example フォルダと AICallKit フォルダを削除します。

  • Podfile を変更して、以下をインポートします。

    • AliVCSDK_ARTC:リアルタイムの音声・動画インタラクション用のクライアント SDK です。AliVCSDK_Standard または AliVCSDK_InteractiveLive を使用することもできます。統合メソッドの詳細については、「iOS」をご参照ください。

    • ARTCAICallKit:リアルタイム対話型 AI 通話シナリオ用の SDK です。

    • AUIFoundation:基本的な UI コンポーネントです。

    • AUIAICall:AI 通話シナリオ UI コンポーネントのソースコードです。

    # iOS 11.0 以降が必要です
    platform :ios, '11.0'
    
    target 'ご利用のアプリのターゲット' do
        # ビジネスシナリオに基づいて適切な音声・動画ターミナル SDK を統合します
        pod 'AliVCSDK_ARTC', '~> x.x.x'
    
        # リアルタイム対話型 AI 通話シナリオ SDK
        pod 'ARTCAICallKit', '~> x.x.x'
    
        # 基本的な UI コンポーネントのソースコード
        pod 'AUIFoundation', :path => "./AUIAICall/AUIBaseKits/AUIFoundation/", :modular_headers => true
    
        # AI 通話シナリオ UI コンポーネントのソースコード
        pod 'AUIAICall',  :path => "./AUIAICall/"
    end
    説明
    • 最新の ARTC SDK バージョン: 7.10.0

    • 最新の AICallKit SDK バージョン: 2.11.0

  • pod install --repo-update コマンドを実行します。

  • ソースコードの統合は完了です。

プロジェクト設定

  • マイクとカメラの権限を追加します。プロジェクトの info.plist ファイルを開き、マイク権限 (NSMicrophoneUsageDescription)、カメラ権限 (NSCameraUsageDescription)、およびフォトライブラリ権限 (NSPhotoLibraryUsageDescription) を追加します。

  • プロジェクト設定の [Signing & Capabilities] タブで、[Background Modes] を有効にします。バックグラウンドモードを有効にしない場合、アプリケーションがバックグラウンドに入ったときの通話の終了を手動で処理する必要があります。

ソースコードの設定

  • 前提条件のステップを完了していること。

  • AUIAICallAppServer.swift ファイルに移動し、サーバー側のドメイン名を設定します。

    // AUIAICallAppServer.swift
    public let AICallServerDomain = "ご利用のアプリケーションサーバーのドメイン名"
    説明

    AppServer をデプロイしていない場合は、アプリケーションで認証トークンを生成してデモを迅速にテストできます。詳細については、「AppServer がデプロイされていない場合」をご参照ください。

API の呼び出し

上記の手順を完了した後、コンポーネントインターフェイスを使用して、アプリケーションの他のモジュールまたはホームページから AI 通話を開始できます。ビジネス要件に合わせてソースコードを変更することもできます。

// コンポーネントのインポート
import AUIAICall
import ARTCAICallKit
import AUIFoundation

// マイク権限が有効になっているか確認
AVDeviceAuth.checkMicAuth { auth in
   if auth == false {
       return
   }

   // userId には、アプリログイン後のユーザー ID を使用します
   let userId = "xxx"
   // userId を使用してコントローラーをビルド
   let controller = AUIAICallController(userId: userId)
   // エージェント ID を設定します。nil は指定できません。
   controller.config.agentId = "xxx"
   // 通話タイプ (音声、デジタルヒューマン、または画像認識) を設定します。エージェント ID のタイプと一致させる必要があります。
   controller.config.agentType = agentType
   // エージェントが配置されているリージョン。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)
  }