クイック スタート: UI ライブラリの使用を開始する

Azure Communication Services UI ライブラリの使用を開始して、通信エクスペリエンスをアプリケーションに迅速に統合します。 このクイック スタートでは、UI ライブラリ複合トをアプリケーションに統合し、アプリ ユーザーのエクスペリエンスを設定する方法について説明します。

Communication Services UI ライブラリにより、アプリケーションに完全な通信エクスペリエンスが提供されます。 通話への接続が処理され、ユーザーの通話への参加がバックグラウンドで設定されます。 開発者は、アプリのユーザー エクスペリエンス内のどこで通信エクスペリエンスを開始するのかを検討する必要があります。 複合では、デバイスの設定、通話への参加、他の参加者の提供を通じてユーザーを支援します。

概要については、次のビデオをご覧ください。

Note

Web UI ライブラリに関する詳細なドキュメントとクイックスタートについては、Web UI ライブラリのストーリーブックに関するページにアクセスしてください。

前提条件

次のクイック スタートにアクセスできます

オープンソースの Azure Communication Services の Android 用 UI ライブラリで、このクイック スタート用のサンプル Android アプリケーションを取得します。

前提条件

プロジェクトのセットアップ

次のセクションを完了して、クイック スタート プロジェクトを設定します。

新しい Android プロジェクトを作成する

次のように、Android Studio で新しいプロジェクトを作成します。

  1. [ファイル] メニューで [新規作成]>[新しいプロジェクト] を選びます。

  2. [新しいプロジェクト] で、[Empty Activity](空のアクティビティ) プロジェクト テンプレートを選択します。

    [Empty Activity](空のアクティビティ) が選択された、Android Studio の [新しいプロジェクト] ダイアログを示すスクリーンショット。

  3. [次へ] を選択します。

  4. [Empty Activity](空のアクティビティ) で、プロジェクトに UILibraryQuickStart という名前を付けます。 言語として、[Java/Kotlin] を選択します。 最小 SDK として、API 21: Android 5.0 (Lollipop) 以上を選択します。

  5. [完了] を選択します。

    新しいプロジェクトのオプションが示され、[完了] ボタンが選択されているスクリーンショット。

パッケージのインストール

必要なアプリケーション パッケージをインストールするには、次のセクションを完了します。

依存関係を追加する

アプリ レベルの UILibraryQuickStart/app/build.gradle ファイル (app フォルダー内) に、次の依存関係を追加します。

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-ui-calling:+'
    ...
}

Maven レポジトリの追加

ライブラリを統合するには、次の 2 つの Maven リポジトリが必要です。

  • MavenCentral
  • Azure パッケージ リポジトリ

リポジトリを追加するには:

  1. プロジェクトの Gradle スクリプトで、次のリポジトリが追加されていることを確認します。 Android Studio (2020.*) の場合、repositories は、dependencyResolutionManagement(Gradle version 6.8 or greater) 内の settings.gradle にあります。 以前のバージョンの Android Studio (4.*) の場合、repositories は、allprojects{} 内のプロジェクト レベルの build.gradle にあります。

    // dependencyResolutionManagement
    repositories {
        ...
        mavenCentral()
        maven {
            url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
        }
        ...
    }
    
  2. プロジェクトを Gradle ファイルと同期します。 プロジェクトを同期するには、[ファイル] メニューの [Sync Project With Gradle Files](プロジェクトを Gradle のファイルと同期する) を選択します。

Activity_main.xml にボタンを追加する

app/src/main/res/layout/activity_main.xml レイアウト ファイルで、次のコードを追加して複合を開始するボタンを作成します。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/startButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Launch"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

複合を初期化する

複合を初期化するには:

  1. MainActivity にアクセスします。

  2. 次のコードを追加して、通話用の複合コンポーネントを初期化します。 "GROUP_CALL_ID" を通話のグループ ID に置き換えます。 "DISPLAY_NAME" をユーザー名で置き換えます。 "USER_ACCESS_TOKEN" を実際のトークンに置き換えます。

package com.example.uilibraryquickstart

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import com.azure.android.communication.common.CommunicationTokenCredential
import com.azure.android.communication.common.CommunicationTokenRefreshOptions
import com.azure.android.communication.ui.calling.CallComposite
import com.azure.android.communication.ui.calling.CallCompositeBuilder
import com.azure.android.communication.ui.calling.models.CallCompositeGroupCallLocator
import com.azure.android.communication.ui.calling.models.CallCompositeJoinLocator
import com.azure.android.communication.ui.calling.models.CallCompositeRemoteOptions
import java.util.UUID

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        val startButton: Button = findViewById(R.id.startButton)
        startButton.setOnClickListener { l -> startCallComposite() }
    }

    private fun startCallComposite() {
        val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions({ fetchToken() }, true)
        val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)

        val locator: CallCompositeJoinLocator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
        val remoteOptions = CallCompositeRemoteOptions(locator, communicationTokenCredential, "DISPLAY_NAME")

        val callComposite: CallComposite = CallCompositeBuilder().build()
        callComposite.launch(this, remoteOptions)
    }

    private fun fetchToken(): String? {
        return "USER_ACCESS_TOKEN"
    }
}

コードの実行

Android Studio で、次のようにアプリケーションをビルドして起動します。

  1. [起動] を選択します。
  2. アクセス許可に同意し、デバイス、マイク、およびビデオの設定を選択します。
  3. [通話に参加] を選択します。

プロジェクトが Android デバイスでどのように実行されるのかを示す例を示す GIF アニメーション。

オブジェクト モデル

Azure Communication Services Android UI が備える主な機能のいくつかは、次のクラスとインターフェイスにより処理されます。

名前 説明
CallComposite 参加者ギャラリーとコントロールを使用して、通話エクスペリエンスを提供する複合コンポーネント
CallCompositeBuilder オプションを使用して CallComposite をビルドするビルダー
CallCompositeJoinMeetingLocator グループ通話を開始するために CallComposite 起動に渡されます
CallCompositeJoinMeetingLocator Microsoft Teams 会議に参加するために CallComposite 起動に渡されます
CallCompositeLocalizationOptions 複合の言語を設定するために、CallCompositeBuilder でオプションとして挿入されます

UI ライブラリの機能

Android アプリケーションの主要な通信機能を作成するコードを取得します。

CallComposite を作成する

CallComposite を作成するには、startCallComposite 関数内で CallCompositeBuilder インスタンスおよび CallComposite インスタンスを初期化します。

val callComposite: CallComposite = CallCompositeBuilder().build()

認証の設定

認証を設定するには、startCallComposite 関数内で CommunicationTokenCredential インスタンスを初期化します。 "USER_ACCESS_TOKEN" は、アクセス トークンに置き換えます。

val callComposite: CallComposite = CallCompositeBuilder().build()

val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)

val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)

グループ通話を設定する

グループ通話を設定するには、CallCompositeGroupCallLocator を初期化して、CallCompositeRemoteOptions オブジェクトに指定します。

val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))

val remoteOptions = CallCompositeRemoteOptions(
    locator,
    communicationTokenCredential,            
    "DISPLAY_NAME",
)

Teams 会議を設定する

Microsoft Teams 会議を設定するには、CallCompositeTeamsMeetingLinkLocator を初期化して、CallCompositeRemoteOptions オブジェクトに指定します。

val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")

val remoteOptions = CallCompositeRemoteOptions(
    locator,
    communicationTokenCredential,            
    "DISPLAY_NAME",
)

ルーム通話を設定する

重要

Azure Communication Services のこの機能は、現在プレビュー段階にあります。

プレビューの API と SDK は、サービス レベル アグリーメントなしに提供されます。 運用環境のワークロードには使用しないことをお勧めします。 一部の機能はサポート対象ではなく、機能が制限されることがあります。

詳細については、「Microsoft Azure プレビューの追加利用規約」を確認してください。

ACS ルーム通話を設定するには、CallCompositeRoomLocator を初期化し、それを CallCompositeRemoteOptions オブジェクトに対して指定し、setRoleHint() によって CallCompositeParticipantRoleCallCompositeLocalOptions に設定します。 CallComposite は、通話に接続する前にロール ヒントを使用します。 通話が接続されると、実際の最新の参加者ロールが ACS から取得されます。

ルームの詳細について、およびルームを作成して管理する方法については、ルームのクイックスタートに関するページを参照してください

val locator = CallCompositeRoomLocator("<ROOM_ID>")

val remoteOptions = CallCompositeRemoteOptions(
    locator,
    communicationTokenCredential,            
    "DISPLAY_NAME",
)

val localOptions = CallCompositeLocalOptions().setRoleHint(participantRole)

val callComposite = CallCompositeBuilder().build()
callComposite.launch(context, remoteOptions, localOptions)

複合を起動する

通話 UI を起動するには、startCallComposite 関数内で CallComposite インスタンスに対して launch を呼び出します。

callComposite.launch(context, remoteOptions)

CallComposite エラー イベントをサブスクライブする

エラー イベントを受信するには、CallCompositesetOnErrorHandler を呼び出します。

次の errorCode の値がエラー ハンドラーに送信される場合があります。

  • CallCompositeErrorCode.CALL_JOIN_FAILED
  • CallCompositeErrorCode.CALL_END_FAILED
  • CallCompositeErrorCode.TOKEN_EXPIRED
  • CallCompositeErrorCode.CAMERA_FAILURE
  • CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
  • CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE

次の例は、失敗したコンポジット イベントのエラー イベントを示しています。

callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
    println(callCompositeErrorEvent.errorCode)
}

テーマ構成を適用する

複合のプライマリ色を変更するには、AzureCommunicationUICalling.Theme を親テーマとして使用して、src/main/res/values/themes.xml および src/main/res/values-night/themes.xml で新しいテーマ スタイルを作成します。 テーマを適用するには、次のように CallCompositeBuilder にテーマ ID を挿入します。

<style name="MyCompany.CallComposite" parent="AzureCommunicationUICalling.Theme">
    <item name="azure_communication_ui_calling_primary_color">#27AC22</item>
    <item name="azure_communication_ui_calling_primary_color_tint10">#5EC65A</item>
    <item name="azure_communication_ui_calling_primary_color_tint20">#A7E3A5</item>
    <item name="azure_communication_ui_calling_primary_color_tint30">#CEF0CD</item>
</style>
val callComposite: CallComposite =
        CallCompositeBuilder()
            .theme(R.style.MyCompany_CallComposite)
            .build()

ローカライズ構成を適用する

複合の言語を変更するには、CallCompositeSupportedLocale を使用して LocaleCallCompositeLocalizationOptions を作成します。 言語を適用するには、ローカライズ構成を CallCompositeBuilder に挿入します。 既定では、すべてのテキスト ラベルで英語 (en) の文字列が使用されます。 CallCompositeLocalizationOptions を使用して、language に別の値を設定できます。 既定では、UI ライブラリには、UI コンポーネントで使用できる一連の language の値が含まれています。 CallCompositeSupportedLocale にサポートされているロケールが用意されています。 たとえば、英語ロケールにアクセスするには、CallCompositeSupportedLocale.EN を使用できます。 CallCompositeSupportedLocale.getSupportedLocales() は、サポートされている言語のロケール オブジェクトの一覧を提供します。

import com.azure.android.communication.ui.calling.models.CallCompositeLocalizationOptions
import com.azure.android.communication.ui.calling.models.CallCompositeSupportedLocale

// CallCompositeSupportedLocale provides list of supported locale
val callComposite: CallComposite =
            CallCompositeBuilder().localization(
                CallCompositeLocalizationOptions(CallCompositeSupportedLocale.EN)
            ).build()

CallComposite の呼び出し状態変更イベントをサブスクライブする

呼び出し状態変更イベントを受信するには、CallComposite を使用して addOnCallStateChangedEventHandler を呼び出します。

次の例は、呼び出し状態変更のイベントを示しています。

callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
    println(callStateChangedEvent.code)
}

CallComposite を無視し、無視されたイベントをサブスクライブする

無視を受信するには、CallComposite を使用して addOnDismissedEventHandler を呼び出します CallComposite を無視するには、dismiss を呼び出します。

次の例は、呼び出し状態変更のイベントを示しています。

callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
    println(callCompositeDismissedEvent.errorCode)
}

callComposite.dismiss()

その他の機能

ユース ケースの一覧に、他の機能の詳細情報が含まれています。

モバイル アプリに通知を追加する

Azure Communication Services は、Azure Event Grid および Azure Notification Hubs と統合されます。これにより、Azure のアプリにプッシュ通知を追加できます。 プッシュ通知を使用すると、アプリケーションからユーザーのモバイル デバイスに情報を送信できます。 プッシュ通知では、ダイアログを表示したり、音を鳴らしたり、着信の UI を表示したりすることができます。

オープンソースの Azure Communication Services の iOS 用 UI ライブラリで、このクイック スタート用のサンプル iOS アプリケーションを取得します。

前提条件

プロジェクトのセットアップ

次のセクションを完了して、クイック スタート プロジェクトを設定します。

新しい Xcode プロジェクトを作成する

Xcode で新しいプロジェクトを作成します。

  1. [ファイル] メニューで、[新規作成]>[プロジェクト] の順に選択します。

  2. [新しいプロジェクトのテンプレートを選択する] で、[iOS] プラットフォームを選択し、[アプリ] アプリケーション テンプレートを選択します。 クイック スタートでは、UIKit ストーリーボードを使用します。 クイック スタートではテストは作成されないため、[Include Tests] (テストを含める) チェック ボックスはオフにしてかまいません。

    [iOS] と [アプリ] テンプレートが選択された、Xcode の新規プロジェクト ダイアログを示すスクリーンショット。

  3. [Choose options for your new project] で、製品名に「UILibraryQuickStart」と入力します。 [Interface] で、[Storyboard] を選択します。

    Xcode で新しいプロジェクトの設定オプションを示すスクリーンショット。

パッケージとその依存関係をインストールする

  1. (省略可能) MacBook M1 の場合は、Xcode で Rosetta をインストールし、有効にしてください。

  2. プロジェクトのルートディレクトリで、pod init を実行して Podfile を作成します。 エラーが発生した場合は、 CocoaPods を現在のバージョンに更新します。

  3. Podfile に次のコードを追加します。 UILibraryQuickStart を実際のプロジェクト名に置き換えます。

    platform :ios, '14.0'
    
    target 'UILibraryQuickStart' do
        use_frameworks!
        pod 'AzureCommunicationUICalling', '1.2.0'
    end
    
  4. pod install --repo-update を実行します。

  5. Xcode で、生成された .xcworkspace ファイルを開きます。

デバイス ハードウェアへのアクセスを要求する

マイクやカメラなどのデバイスのハードウェアにアクセスするには、アプリの情報プロパティ リストを更新します。 関連付けられた値を文字列に設定します。これは、ユーザーからのアクセスの要求を求めるためにシステムによって使用されるダイアログに含められます。

  1. プロジェクト ツリーの Info.plist のエントリを右クリックし、 [Open As](形式を指定して開く)>[Source Code](ソース コード) の順に選択します。 最上位の <dict> セクションに以下の行を追加してから、ファイルを保存します。

    <key>NSCameraUsageDescription</key>
    <string></string>
    <key>NSMicrophoneUsageDescription</key>
    <string></string>
    

    Xcode ファイルの Info.plist ソース コードの例を次に示します。

    Xcode ファイルの info plist ソース コードの例を示すスクリーンショット。

  2. デバイスのアクセス許可要求が正しく追加されたことを確認するには、[形式を指定して開く]>[プロパティ リスト] を選択します。 情報プロパティ リストが次の例のようになっていることを確認します。

    Xcode でのカメラとマイクのデバイス プライバシーを示すスクリーンショット。

ビットコードをオフにする

Xcode プロジェクトの [ビルド設定] で、[Bitcode を有効にする] オプションを [いいえ] に設定します。 設定を見つけるには、フィルターを [Basic] から [すべて] に変更するか、検索バーを使用します。

Bitcode をオフにする [ビルド設定] オプションを示すスクリーンショット。

複合を初期化する

複合を初期化するには:

  1. ViewController にアクセスします。

  2. 次のコードを追加して、通話用の複合コンポーネントを初期化します。 <GROUP_CALL_ID> を、通話のグループ ID に置き換えるか、または通話のグループ ID を生成する UUID() に置き換えます。 <DISPLAY_NAME> をユーザー名で置き換えます。 (<DISPLAY_NAME> の文字列の長さの制限は 256 文字です)。<USER_ACCESS_TOKEN> をアクセス トークンに置き換えます。

    import UIKit
    import AzureCommunicationCalling
    import AzureCommunicationUICalling
    
    class ViewController: UIViewController {
    
        private var callComposite: CallComposite?
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let button = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50))
            button.contentEdgeInsets = UIEdgeInsets(top: 10.0, left: 20.0, bottom: 10.0, right: 20.0)
            button.layer.cornerRadius = 10
            button.backgroundColor = .systemBlue
            button.setTitle("Start Experience", for: .normal)
            button.addTarget(self, action: #selector(startCallComposite), for: .touchUpInside)
    
            button.translatesAutoresizingMaskIntoConstraints = false
            self.view.addSubview(button)
            button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
            button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        }
    
        @objc private func startCallComposite() {
            let callCompositeOptions = CallCompositeOptions()
    
            callComposite = CallComposite(withOptions: callCompositeOptions)
    
            let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
    
            let remoteOptions = RemoteOptions(for: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!),
                                              credential: communicationTokenCredential,
                                              displayName: "<DISPLAY_NAME>")
            callComposite?.launch(remoteOptions: remoteOptions)
        }
    }
    

コードの実行

iOS シミュレーターでアプリをビルドして実行するには、[製品]>[実行] の順に選択するか、(⌘-R) キーボード ショートカットを使用します。 次に、シミュレーターで通話エクスペリエンスを試します。

  1. [開始操作] を選択します。

  2. オーディオのアクセス許可に同意し、デバイス、マイク、およびビデオの設定を選択します。

  3. [通話を開始] を選択します。

クイックスタート iOS アプリの最終的な外観を示す GIF アニメーション。

オブジェクト モデル

Azure Communication Services UI クライアント ライブラリが備える主な機能のいくつかは、次のクラスとインターフェイスにより処理されます。

名前 説明
CallComposite 参加者ギャラリーとコントロールを使用して、通話エクスペリエンスを提供するコンポーネント
CallCompositeOptions テーマやイベント処理などのオプションの設定
RemoteOptions グループ通話または Teams 会議に参加するために Azure Communication Services に送信するリモート オプション。
ThemeOptions 複合テーマのカスタマイズ オプション
LocalizationOptions 複合の言語オプション

UI ライブラリの機能

iOS アプリケーションの主要な通信機能を作成するコードを取得します。

CallComposite を作成する

CallComposite を作成するには、startCallComposite 関数内で CallCompositeOptions インスタンスおよび CallComposite インスタンスを初期化します。

@objc private func startCallComposite() {
    let callCompositeOptions = CallCompositeOptions()

    callComposite = CallComposite(withOptions: callCompositeOptions)
}

認証の設定

認証を設定するには、startCallComposite 関数内で CommunicationTokenCredential インスタンスを初期化します。 <USER_ACCESS_TOKEN> は、アクセス トークンに置き換えます。

let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")

アクセス トークンがまだない場合は、Azure Communication Services アクセス トークンを作成します

グループ通話を設定する

グループ通話を設定するには、startCallComposite 関数内で、.groupCall ロケーターの RemoteOptions インスタンスを初期化します。 <GROUP_CALL_ID> を通話のグループ ID に置き換えます。 <DISPLAY_NAME> をユーザー名で置き換えます。

// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let remoteOptions = RemoteOptions(for: .groupCall(groupId: uuid),
                                  credential: communicationTokenCredential,
                                  displayName: "<DISPLAY_NAME>")

通話にグループ ID を使用する方法の詳細については、「通話を管理する」を参照してください。

Teams 会議を設定する

Microsoft Teams 会議を設定するには、startCallComposite 関数内で、.teamsMeeting ロケーターの RemoteOptions インスタンスを初期化します。 <TEAMS_MEETING_LINK> を通話の Teams 会議リンクに置き換えます。 <DISPLAY_NAME> をユーザー名で置き換えます。

let remoteOptions = RemoteOptions(for: .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>"),
                                  credential: communicationTokenCredential,
                                  displayName: "<DISPLAY_NAME>")

Graph API を使用して、Microsoft Teams 会議リンクを取得できます。 このプロセスについては、Graph のドキュメントで詳しく説明されています。

Communication Services 通話 SDK は、Microsoft Teams 会議のフル リンクを受け入れます。 このリンクは、joinWebUrl プロパティの下で onlineMeeting リソースの一部として返されます。 また、必要な会議情報は、Teams 会議の招待状自体にある [会議に参加] の URL から取得することもできます。

ルーム通話を設定する

重要

Azure Communication Services のこの機能は、現在プレビュー段階にあります。

プレビューの API と SDK は、サービス レベル アグリーメントなしに提供されます。 運用環境のワークロードには使用しないことをお勧めします。 一部の機能はサポート対象ではなく、機能が制限されることがあります。

詳細については、「Microsoft Azure プレビューの追加利用規約」を確認してください。

ACS ルーム通話を設定するには、startCallComposite 関数内で、.roomCall ロケーターの RemoteOptions インスタンスを初期化します。 <ROOM_ID> は、通話のルーム ID に置き換えてください。 roleHint を使用して LocalOptions インスタンスを初期化します。

<DISPLAY_NAME> をユーザー名で置き換えます。

CallComposite は、通話に接続する前にロール ヒントを使用します。 通話が接続されると、実際の最新の参加者ロールが ACS から取得されます。

ルームの詳細について、およびルームを作成して管理する方法については、ルームのクイックスタートに関するページを参照してください

let remoteOptions = RemoteOptions(for: .roomCall(roomId: "<ROOM_ID>"),
                                  credential: communicationTokenCredential,
                                  displayName: "<DISPLAY_NAME>")
let localOptions = LocalOptions(roleHint: participantRole)

let callComposite = CallComposite()
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)

複合を起動する

startCallComposite 関数内で、CallComposite インスタンスの launch を呼び出します。

callComposite?.launch(remoteOptions: remoteOptions)

イベントをサブスクライブする

クロージャを実装してthe compositeイベントを処理できます。 次の errorCode がエラー ハンドラーに送信される場合があります。

  • callJoin
  • callEnd
  • cameraFailure
  • tokenExpired
  • microphonePermissionNotGranted
  • networkConnectionNotAvailable

次の例は、失敗したコンポジット イベントのエラー イベントを示しています。

callComposite?.events.onError = { error in
    print("CallComposite failed with error:\(error)")
}

テーマ オプションを適用する

アプリケーションの通信エクスペリエンスをカスタマイズするには、ThemeOptions プロトコルを実装するカスタム テーマ オプションを作成します。 CallCompositeOptions に新しいクラスのインスタンスを含めます。

class CustomThemeOptions: ThemeOptions {
   var primaryColor: UIColor {
       return UIColor.red
   }
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())

テーマ設定のしくみの詳細については、テーマに関する ガイドを参照してください。

ローカライズ オプションを適用する

複合の言語を変更するには、カスタム ローカライズ オプションを作成し、それらを CallCompositeOptions に含めます。 既定では、すべてのテキスト ラベルで英語 (SupportedLocale.en) の文字列が使用されます。 LocalizationOptions を使用して、locale に別の値を設定できます。 既定では、UI ライブラリには、UI コンポーネントで使用できる一連の locale の値が含まれています。 SupportedLocale.values はサポートされているすべての言語の一覧を提供します。

次の例では、複合はフランス語 (fr) にローカライズされています。

// Option1: Use IntelliSense to get locales UI Library supports.
let localizationOptions = LocalizationOptions(locale: SupportedLocale.frFR)

// Option2: If UI Library doesn't support the locale you set, the Swift Locale struct defaults to English.
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr-FR"))

let callCompositeOptions = CallCompositeOptions(localization: localizationOptions) 

ローカライズの詳細と、サポートされている言語の一覧については、ローカライズに関するガイドを参照してください。

CallComposite の呼び出し状態変更イベントをサブスクライブする

クロージャを実装してthe compositeイベントを処理できます。 呼び出し状態は、呼び出し状態変更ハンドラーに送信されます。

次の例は、呼び出し状態変更のイベントを示しています。

callComposite?.events.onCallStateChanged = { callStateEvent in
   print("CallComposite call state changed:\(callStateEvent.requestString)")
}

CallComposite を無視し、無視されたイベントをサブスクライブする

CallComposite を無視するには、dismiss を呼び出します。 次の無視イベントは、無視される通話複合に送信されます。

callComposite?.events.onDismissed = { dismissed in
   print("CallComposite dismissed:\(dismissed.errorCode)")
}

callComposite.dismiss()

モバイル アプリに通知を追加する

Azure Communication Services は、Azure Event Grid および Azure Notification Hubs と統合されます。これにより、Azure のアプリにプッシュ通知を追加できます。 プッシュ通知を使用すると、アプリケーションからユーザーのモバイル デバイスに情報を送信できます。 プッシュ通知では、ダイアログを表示したり、音を鳴らしたり、着信の UI を表示したりすることができます。

リソースをクリーンアップする

Communication Services サブスクリプションをクリーンアップして解除する場合は、リソースまたはリソース グループを削除できます。

リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

詳細については、リソースのクリーンアップに関する記事を参照してください。