Guida introduttiva: Introduzione alla libreria dell'interfaccia utente

Introduzione alla libreria dell'interfaccia utente di Servizi di comunicazione di Azure per integrare rapidamente le esperienze di comunicazione nelle applicazioni. Questo argomento di avvio rapido illustra come integrare i compositi della libreria dell'interfaccia utente in un'applicazione e configurare l'esperienza per gli utenti dell'app.

La libreria dell'interfaccia utente di Servizi di comunicazione esegue il rendering di un'esperienza di comunicazione completa direttamente nell'applicazione. Si occupa della connessione alla chiamata e configura la partecipazione dell'utente alla chiamata in background. Gli sviluppatori devono preoccuparsi della posizione in cui si vuole avviare l'esperienza utente dell'app. Il composito porta l'utente attraverso la configurazione dei propri dispositivi, l'aggiunta alla chiamata e la partecipazione e il rendering di altri partecipanti.

Visualizzare questo video per una panoramica:

Nota

Per la documentazione dettagliata e gli argomenti di avvio rapido sulla libreria dell'interfaccia utente Web, visitare il libro della raccolta dell'interfaccia utente Web.

Prerequisiti

È possibile accedere alle guide introduttive seguenti

Ottenere l'applicazione Android di esempio per questa guida introduttiva nell'applicazione open source Servizi di comunicazione di Azure libreria dell'interfaccia utente per Android.

Prerequisiti

Configurare il progetto

Completare le sezioni seguenti per configurare il progetto di avvio rapido.

Creare un nuovo progetto Android

In Android Studio creare un nuovo progetto:

  1. Scegliere Nuovo>progetto dal menu File.

  2. In Nuovo progetto selezionare il modello di progetto Attività vuota.

    Screenshot that shows the New Project dialog in Android Studio with Empty Activity selected.

  3. Selezionare Avanti.

  4. In Attività vuota assegnare al progetto il nome UILibraryQuickStart. Per linguaggio selezionare Java/Kotlin. Per l'SDK minimo selezionare API 21: Android 5.0 (Lollipop) o versione successiva.

  5. Selezionare Fine.

    Screenshot that shows new project options and the Finish button selected.

Installare i pacchetti

Completare le sezioni seguenti per installare i pacchetti dell'applicazione necessari.

Aggiungere una dipendenza

Nel file UILibraryQuickStart/app/build.gradle a livello di app aggiungere la dipendenza seguente:

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

Aggiungere archivi Maven

Per integrare la libreria sono necessari due repository Maven:

  • MavenCentral
  • Repository di pacchetti di Azure

Per aggiungere i repository:

  1. Negli script Gradle del progetto assicurarsi che vengano aggiunti i repository seguenti. Per Android Studio (2020.*), repositories è in , in settings.gradledependencyResolutionManagement(Gradle version 6.8 or greater). Per le versioni precedenti di Android Studio (4.*), repositories si trova a livello build.gradleallprojects{}di progetto in .

    // dependencyResolutionManagement
    repositories {
        ...
        mavenCentral()
        maven {
            url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
        }
        ...
    }
    
  2. Sincronizzare il progetto con i file Gradle. Per sincronizzare il progetto, scegliere Sincronizza progetto con file gradle dal menu File.

Aggiungere un pulsante a Activity_main.xml

Nel file di layout app/src/main/res/layout/activity_main.xml aggiungere il codice seguente per creare un pulsante per avviare il composito:

<?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>

Inizializzare il composito

Per inizializzare il composito:

  1. Vai a MainActivity.

  2. Aggiungere il codice seguente per inizializzare i componenti compositi per la chiamata. Sostituire "GROUP_CALL_ID" con l'ID gruppo per la chiamata. Sostituire "DISPLAY_NAME" con il proprio nome. Sostituire "USER_ACCESS_TOKEN" con il 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"
    }
}

Eseguire il codice

In Android Studio compilare e avviare l'applicazione:

  1. Selezionare Avvia.
  2. Accettare le autorizzazioni e quindi selezionare le impostazioni del dispositivo, del microfono e del video.
  3. Seleziona Partecipa alla chiamata.

GIF animation that shows an example of how the project runs on an Android device.

Modello a oggetti

Le classi e le interfacce seguenti gestiscono alcune funzionalità chiave dell'interfaccia utente android Servizi di comunicazione di Azure:

Nome Descrizione
CallComposite Componente composito che esegue il rendering di un'esperienza di chiamata con la raccolta e i controlli dei partecipanti
CallCompositeBuilder Generatore compilato CallComposite con opzioni
CallCompositeJoinMeetingLocator CallComposite Avvio passato per avviare una chiamata di gruppo
CallCompositeTeamsMeetingLinkLocator Passato per l'avvio CallComposite per partecipare a una riunione di Microsoft Teams
CallCompositeLocalizationOptions Inserito come facoltativo in CallCompositeBuilder per impostare la lingua del composito

Funzionalità della libreria dell'interfaccia utente

Ottenere il codice per creare funzionalità di comunicazione chiave per l'applicazione Android.

Creare CallComposite

Per creare CallComposite, all'interno della startCallComposite funzione inizializzare un'istanza CallCompositeBuilder e un'istanza CallComposite di .

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

Configurare l'autenticazione

Per configurare l'autenticazione, all'interno della startCallComposite funzione inizializzare un'istanza CommunicationTokenCredential di . Sostituire "USER_ACCESS_TOKEN" con il token di accesso.

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

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

val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)

Configurare una chiamata di gruppo

Per configurare una chiamata di gruppo, inizializzare un CallCompositeGroupCallLocator oggetto e specificarlo all'oggetto CallCompositeRemoteOptions .

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

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

Configurare una riunione di Teams

Per configurare una riunione di Microsoft Teams, inizializzare un CallCompositeTeamsMeetingLinkLocator oggetto e fornirlo all'oggetto CallCompositeRemoteOptions .

val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")

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

Configurare una chiamata Rooms

Importante

Questa funzionalità di Servizi di comunicazione di Azure è attualmente in anteprima.

Le API di anteprima e gli SDK vengono forniti senza un contratto di servizio. È consigliabile non usarli per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate.

Per altre informazioni, vedere Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Per configurare una chiamata Servizi di comunicazione di Azure Rooms, inizializzare un CallCompositeRoomLocatoroggetto , fornirlo all'oggetto CallCompositeRemoteOptions e impostare su CallCompositeParticipantRoleCallCompositeLocalOptions di setRoleHint(). CallComposite userà l'hint per il ruolo prima di connettersi alla chiamata. Una volta connessa la chiamata, il ruolo partecipante effettivo aggiornato viene recuperato da Servizi di comunicazione di Azure.

Per altre informazioni sulle sale, su come crearne e gestirla, vedere Guida introduttiva alle sale

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)

Avviare il composito

Per avviare l'interfaccia utente della chiamata, all'interno della startCallComposite funzione, chiamare launch sull'istanza CallComposite di .

callComposite.launch(context, remoteOptions)

Sottoscrivere gli eventi di errore CallComposite

Per ricevere gli eventi di errore, chiamare setOnErrorHandler con CallComposite.

È possibile inviare i valori seguenti errorCode al gestore degli errori:

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

L'esempio seguente mostra un evento di errore per un evento composito non riuscito.

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

Applicare una configurazione del tema

Per modificare il colore principale del composito, creare un nuovo stile del tema in src/main/res/values/themes.xml e src/main/res/values-night/themes.xml usando AzureCommunicationUICalling.Theme come tema padre. Per applicare il tema, inserire l'ID tema in CallCompositeBuilder:

<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()

Applicare una configurazione di localizzazione

Per modificare la lingua del composito, usare CallCompositeSupportedLocale per creare CallCompositeLocalizationOptions con Locale. Per applicare la lingua, inserire la configurazione di localizzazione in CallCompositeBuilder. Per impostazione predefinita, tutte le etichette di testo usano stringhe in inglese (en). È possibile usare CallCompositeLocalizationOptions per impostare un valore diverso per language. Per impostazione predefinita, la libreria dell'interfaccia utente include un set di language valori che è possibile usare con i componenti dell'interfaccia utente. CallCompositeSupportedLocale fornisce le impostazioni locali supportate. Ad esempio, per accedere alle impostazioni locali in inglese, è possibile usare CallCompositeSupportedLocale.EN. CallCompositeSupportedLocale.getSupportedLocales() fornisce un elenco di oggetti delle impostazioni locali per le lingue supportate.

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()

Sottoscrivere l'evento callComposite call changed

Per ricevere gli eventi modificati dello stato della chiamata, chiamare addOnCallStateChangedEventHandler con CallComposite.

L'esempio seguente mostra un evento per uno stato di chiamata modificato.

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

Ignorare CallComposite e sottoscrivere l'evento ignorato

Per ricevere dismiss, chiamare addOnDismissedEventHandler con CallComposite. Per ignorare CallComposite, chiamare dismiss.

L'esempio seguente mostra un evento per uno stato di chiamata modificato.

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

callComposite.dismiss()

Altre funzionalità

L'elenco dei casi d'uso contiene informazioni dettagliate su altre funzionalità.

Aggiungere notifiche all'app per dispositivi mobili

Servizi di comunicazione di Azure si integra con Griglia di eventi di Azure e Hub di notifica di Azure, in modo da poter aggiungere notifiche push alle app in Azure. È possibile usare le notifiche push per inviare informazioni dall'applicazione ai dispositivi mobili degli utenti. Una notifica push può visualizzare una finestra di dialogo, riprodurre un suono o visualizzare un'interfaccia utente di chiamata in ingresso.

Ottenere l'applicazione iOS di esempio per questa guida introduttiva nella libreria dell'interfaccia utente open source Servizi di comunicazione di Azure per iOS.

Prerequisiti

  • Un account Azure e una sottoscrizione di Azure attiva. Creare un account gratuitamente.
  • Un Mac che esegue Xcode 13 o versione successiva e un certificato per sviluppatore valido installato nel keychain. CocoaPods deve essere installato anche per recuperare le dipendenze.
  • Risorsa Servizi di comunicazione di Azure distribuita.
  • Token di accesso Servizi di comunicazione di Azure.

Configurare il progetto

Completare le sezioni seguenti per configurare il progetto di avvio rapido.

Creare un nuovo progetto Xcode

In Xcode creare un nuovo progetto:

  1. Scegliere Nuovo>progetto dal menu File.

  2. In Scegliere un modello per il nuovo progetto selezionare la piattaforma iOS e selezionare il modello Applicazione app. La guida introduttiva usa gli storyboard UIKit. La guida introduttiva non crea test, quindi è possibile deselezionare la casella di controllo Includi test .

    Screenshot that shows the Xcode new project dialog, with iOS and the App template selected.

  3. In Scegliere le opzioni per il nuovo progetto immettere UILibraryQuickStart per il nome del prodotto. Per l'interfaccia selezionare Storyboard.

    Screenshot that shows setting new project options in Xcode.

Installare il pacchetto e le dipendenze

  1. (Facoltativo) Per MacBook con M1, installare e abilitare Rosetta in Xcode.

  2. Nella directory radice del progetto eseguire pod init per creare un Podfile. Se si verifica un errore, aggiornare CocoaPods alla versione corrente.

  3. Aggiungere il codice seguente al podfile. Sostituire UILibraryQuickStart con il nome del progetto.

    platform :ios, '15.0'
    
    target 'UILibraryQuickStart' do
        use_frameworks!
        pod 'AzureCommunicationUICalling'
    end
    
  4. Eseguire pod install --repo-update.

  5. In Xcode aprire il file con estensione xcworkspace generato.

Richiedere l'accesso all'hardware del dispositivo

Per accedere all'hardware del dispositivo, incluso il microfono e la fotocamera, aggiornare l'elenco delle proprietà delle informazioni dell'app. Impostare il valore associato su una stringa inclusa nella finestra di dialogo usata dal sistema per richiedere l'accesso all'utente.

  1. Fare clic con il pulsante destro del mouse sulla voce Info.plist dell'albero del progetto e scegliere Open As>Source Code (Apri come > Codice sorgente). Aggiungere le righe seguenti alla sezione di primo livello <dict> e quindi salvare il file.

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

    Ecco un esempio del Info.plist codice sorgente in un file Xcode:

    Screenshot that shows an example of the info plist source code in an Xcode file.

  2. Per verificare che le richieste di autorizzazione del dispositivo vengano aggiunte correttamente, selezionare Apri come>elenco di proprietà. Verificare che l'elenco delle proprietà di informazioni sia simile all'esempio seguente:

    Screenshot that shows the camera and microphone device privacy in Xcode.

Disattivare Bitcode

Nel progetto Xcode, in Compila Impostazioni, impostare l'opzione Abilita bitcode su No. Per trovare l'impostazione, modificare il filtro da Basic a All o usare la barra di ricerca.

Screenshot that shows the Build Settings option to turn off Bitcode.

Inizializzare il composito

Per inizializzare il composito:

  1. Vai a ViewController.

  2. Aggiungere il codice seguente per inizializzare i componenti compositi per una chiamata. Sostituire <GROUP_CALL_ID> con l'ID gruppo per la chiamata o con UUID() per generare un ID gruppo per la chiamata. Sostituire <DISPLAY_NAME> con il proprio nome. Il limite di lunghezza della stringa per <DISPLAY_NAME> è di 256 caratteri. Sostituire <USER_ACCESS_TOKEN> con il token di accesso.

    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)
        }
    }
    

Eseguire il codice

Per compilare ed eseguire l'app nel simulatore iOS, selezionare Product Run (Esegui prodotto>) o usare il tasto di scelta rapida (⌘-R). Provare quindi l'esperienza di chiamata nel simulatore:

  1. Selezionare Avvia esperienza.

  2. Accettare le autorizzazioni audio e quindi selezionare le impostazioni del dispositivo, del microfono e del video.

  3. Selezionare Avvia chiamata.

GIF animation that demonstrates the final look and feel of the quickstart iOS app.

Modello a oggetti

Le classi e le interfacce seguenti gestiscono alcune funzionalità principali della libreria client dell'interfaccia utente di Servizi di comunicazione di Azure:

Nome Descrizione
CallComposite Componente che esegue il rendering di un'esperienza di chiamata con una raccolta e controlli partecipanti
CallCompositeOptions Impostazioni per opzioni come temi e gestione degli eventi
RemoteOptions Opzioni remote da inviare a Servizi di comunicazione di Azure per partecipare a una chiamata di gruppo o a una riunione di Teams.
ThemeOptions Opzioni di personalizzazione per il tema composito
LocalizationOptions Opzioni di lingua per il composito

Funzionalità della libreria dell'interfaccia utente

Ottenere il codice per creare funzionalità di comunicazione chiave per l'applicazione iOS.

Creare CallComposite

Per creare CallComposite, all'interno della startCallComposite funzione inizializzare un'istanza CallCompositeOptions e un'istanza CallComposite di :

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

    callComposite = CallComposite(withOptions: callCompositeOptions)
}

Configurare l'autenticazione

Per configurare l'autenticazione, all'interno della startCallComposite funzione inizializzare un'istanza CommunicationTokenCredential di . Sostituire <USER_ACCESS_TOKEN> con il token di accesso.

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

Se non si ha già un token di accesso, creare un token di accesso Servizi di comunicazione di Azure.

Configurare una chiamata di gruppo

Per configurare una chiamata di gruppo, all'interno della startCallComposite funzione inizializzare un'istanza RemoteOptions per il .groupCall localizzatore. Sostituire <GROUP_CALL_ID> con l'ID gruppo per la chiamata. Sostituire <DISPLAY_NAME> con il proprio nome.

// 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>")

Per altre informazioni sull'uso di un ID gruppo per le chiamate, vedere Gestire le chiamate.

Configurare una riunione di Teams

Per configurare una riunione di Microsoft Teams, all'interno della startCallComposite funzione inizializzare un'istanza RemoteOptions per il .teamsMeeting localizzatore. Sostituire <TEAMS_MEETING_LINK> con il collegamento alla riunione di Teams per la chiamata. Sostituire <DISPLAY_NAME> con il proprio nome.

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

È possibile ottenere un collegamento alla riunione di Microsoft Teams usando le API Graph. Questo processo è dettagliato nella documentazione di Graph.

Communication Services Call SDK accetta un collegamento completo alla riunione di Microsoft Teams. Questo collegamento viene restituito come parte della onlineMeeting risorsa, nella proprietà joinWebUrl. È anche possibile ottenere le informazioni necessarie sulla riunione dall'URL di partecipazione alla riunione nell'invito alla riunione di Teams stesso.

Configurare una chiamata Rooms

Importante

Questa funzionalità di Servizi di comunicazione di Azure è attualmente in anteprima.

Le API di anteprima e gli SDK vengono forniti senza un contratto di servizio. È consigliabile non usarli per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate.

Per altre informazioni, vedere Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Per configurare una chiamata Servizi di comunicazione di Azure Rooms, all'interno della startCallComposite funzione inizializzare un'istanza RemoteOptions per il .roomCall localizzatore. Sostituire <ROOM_ID> con l'ID sala per la chiamata. Inizializzare un'istanza LocalOptions di con roleHint.

Sostituire <DISPLAY_NAME> con il proprio nome.

CallComposite userà l'hint per il ruolo prima di connettersi alla chiamata. Una volta connessa la chiamata, il ruolo partecipante effettivo aggiornato viene recuperato da Servizi di comunicazione di Azure.

Per altre informazioni sulle sale, su come crearne e gestirla, vedere Guida introduttiva alle sale

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)

Avviare il composito

All'interno della startCallComposite funzione chiamare launch sull'istanza CallComposite di :

callComposite?.launch(remoteOptions: remoteOptions)

Sottoscrivere eventi

È possibile implementare le chiusure per agire su eventi compositi. È possibile inviare i codici di errore seguenti al gestore degli errori:

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

L'esempio seguente mostra un evento di errore per un evento composito non riuscito:

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

Applica opzioni tema

Per personalizzare l'esperienza di comunicazione nell'applicazione, creare opzioni di tema personalizzate che implementano il ThemeOptions protocollo. Includere un'istanza della nuova classe in CallCompositeOptions:

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

Per altre informazioni sul funzionamento del tema, vedere la guida al tema.

Applicare le opzioni di localizzazione

Per modificare la lingua nel composito, creare opzioni di localizzazione personalizzate e includerle in CallCompositeOptions. Per impostazione predefinita, tutte le etichette di testo usano stringhe in inglese (SupportedLocale.en). È possibile usare LocalizationOptions per impostare un valore diverso per locale. Per impostazione predefinita, la libreria dell'interfaccia utente include un set di locale valori che è possibile usare con i componenti dell'interfaccia utente. SupportedLocale.values fornisce un elenco di tutte le lingue supportate.

Nell'esempio seguente il composito viene localizzato in francese (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) 

Per altre informazioni sulla localizzazione e per un elenco delle lingue supportate, vedere la guida alla localizzazione.

Sottoscrivere l'evento callComposite call changed

È possibile implementare le chiusure per agire su eventi compositi. Gli stati di chiamata verranno inviati al gestore delle modifiche dello stato della chiamata.

L'esempio seguente mostra un evento per uno stato di chiamata modificato.

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

Ignorare CallComposite e sottoscrivere l'evento ignorato

Per ignorare CallComposite, chiamare dismiss. L'evento dismiss seguente viene inviato alla chiamata composita ignorata:

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

callComposite.dismiss()

Aggiungere notifiche all'app per dispositivi mobili

Servizi di comunicazione di Azure si integra con Griglia di eventi di Azure e Hub di notifica di Azure, in modo da poter aggiungere notifiche push alle app in Azure. È possibile usare le notifiche push per inviare informazioni dall'applicazione ai dispositivi mobili degli utenti. Una notifica push può visualizzare una finestra di dialogo, riprodurre un suono o visualizzare un'interfaccia utente di chiamata in ingresso.

Pulire le risorse

Se si vuole pulire e rimuovere una sottoscrizione a Servizi di comunicazione, è possibile eliminare la risorsa o il gruppo di risorse.

L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate.

Altre informazioni sulla pulizia delle risorse.