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
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una risorsa di Servizi di comunicazione distribuita. Creare una risorsa di Servizi di comunicazione.
- Servizi di comunicazione di Azure Token. Vedere l'esempio
È 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
- Un account Azure e una sottoscrizione di Azure attiva. Creare un account gratuitamente.
- Un sistema operativo che esegue Android Studio.
- 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 Android
In Android Studio creare un nuovo progetto:
Scegliere Nuovo>progetto dal menu File.
In Nuovo progetto selezionare il modello di progetto Attività vuota.
Selezionare Avanti.
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.
Selezionare Fine.
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:
Negli script Gradle del progetto assicurarsi che vengano aggiunti i repository seguenti. Per Android Studio (2020.*),
repositories
è in , insettings.gradle
dependencyResolutionManagement(Gradle version 6.8 or greater)
. Per le versioni precedenti di Android Studio (4.*),repositories
si trova a livellobuild.gradle
allprojects{}
di progetto in .// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
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:
Vai a
MainActivity
.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:
- Selezionare Avvia.
- Accettare le autorizzazioni e quindi selezionare le impostazioni del dispositivo, del microfono e del video.
- Seleziona Partecipa alla chiamata.
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 .
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 CallCompositeRoomLocator
oggetto , fornirlo all'oggetto CallCompositeRemoteOptions
e impostare su CallCompositeParticipantRole
CallCompositeLocalOptions
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 .
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:
Scegliere Nuovo>progetto dal menu File.
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 .
In Scegliere le opzioni per il nuovo progetto immettere UILibraryQuickStart per il nome del prodotto. Per l'interfaccia selezionare Storyboard.
Installare il pacchetto e le dipendenze
(Facoltativo) Per MacBook con M1, installare e abilitare Rosetta in Xcode.
Nella directory radice del progetto eseguire
pod init
per creare un Podfile. Se si verifica un errore, aggiornare CocoaPods alla versione corrente.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
Eseguire
pod install --repo-update
.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.
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: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:
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.
Inizializzare il composito
Per inizializzare il composito:
Vai a
ViewController
.Aggiungere il codice seguente per inizializzare i componenti compositi per una chiamata. Sostituire
<GROUP_CALL_ID>
con l'ID gruppo per la chiamata o conUUID()
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:
Selezionare Avvia esperienza.
Accettare le autorizzazioni audio e quindi selezionare le impostazioni del dispositivo, del microfono e del video.
Selezionare Avvia chiamata.
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>")
Ottenere un collegamento alla riunione di Teams
È 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.