Szybki przewodnik: rozpoczęcie pracy z biblioteką składników interfejsu użytkownika

Warning

Azure Communication Services wprowadza nowatorskie zmiany, a niektóre usługi są wycofywane. Dowiedz się więcej w przewodniku po zmianach emerytalnych i przełamowych.

Rozpocznij pracę z biblioteką interfejsu użytkownika usług Azure Communication Services, aby szybko zintegrować środowiska komunikacyjne z aplikacjami. Z tego przewodnika Szybki start dowiesz się, jak zintegrować złożone biblioteki interfejsu użytkownika z aplikacją i skonfigurować środowisko dla użytkowników aplikacji.

Biblioteka interfejsu użytkownika usługi Communication Services zapewnia kompleksową komunikację bezpośrednio w Twojej aplikacji. Odpowiada za połączenie z rozmową i konfiguruje udział użytkownika w rozmowie w tle. Jako deweloper musisz martwić się o to, gdzie w środowisku użytkownika aplikacji chcesz, aby środowisko komunikacji było uruchamiane. Komponent złożony prowadzi użytkownika przez proces konfigurowania urządzeń, dołączania do rozmowy i uczestniczenia w niej oraz wyświetlania pozostałych uczestników.

Obejrzyj to wideo, aby zapoznać się z omówieniem:

Uwaga

Aby uzyskać szczegółową dokumentację i przewodniki szybkiego startu dotyczące biblioteki Web UI, odwiedź Storybook biblioteki Web UI.

Wymagania wstępne

Możesz uzyskać dostęp do następujących przewodników Szybki start

Pobierz przykładową aplikację systemu Android dla tego przewodnika Szybki start w bibliotece interfejsu użytkownika usług Azure Communication Services typu open source dla systemu Android.

Wymagania wstępne

Konfigurowanie projektu

Wykonaj poniższe sekcje, aby skonfigurować projekt Szybki start.

Tworzenie nowej aplikacji systemu Android

W programie Android Studio utwórz nowy projekt:

  1. W menu Plik wybierz pozycję Nowy>nowy projekt.

  2. W obszarze Nowy projekt wybierz szablon projektu Puste działanie.

    Zrzut ekranu przedstawiający okno dialogowe „Nowy projekt” w programie Android Studio z wybraną opcją Empty Activity.

  3. Wybierz Dalej.

  4. W polu Empty Activity (Puste działanie) nadaj projektowi nazwę UILibraryQuickStart. W polu Język wybierz pozycję Java/Kotlin. Jako minimalny pakiet SDK wybierz API 26: Android 8.0 (Oreo) lub nowszy.

  5. Wybierz Zakończ.

    Zrzut ekranu przedstawiający nowe opcje projektu i wybrany przycisk Zakończ.

Instalowanie pakietów

Wykonaj poniższe sekcje, aby zainstalować wymagane pakiety aplikacji.

Dodawanie zależności

W pliku UILibraryQuickStart/app/build.gradle na poziomie aplikacji (w folderze app) dodaj następującą zależność:

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

Dodawanie repozytoriów Maven

Do zintegrowania biblioteki są wymagane dwa repozytoria Maven:

  • MavenCentral
  • Repozytorium pakietów platformy Azure

Aby dodać repozytoria:

  1. W skryptach narzędzia Gradle projektu upewnij się, że zostały dodane następujące repozytoria. W Android Studio (2020.*) repositories znajduje się w settings.gradle, w sekcji dependencyResolutionManagement(Gradle version 6.8 or greater). W przypadku wcześniejszych wersji programu Android Studio (4.*) repositories znajduje się na poziomie build.gradleprojektu w obszarze allprojects{}.

    // dependencyResolutionManagement
    repositories {
        ...
        mavenCentral()
        maven {
            url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
        }
        ...
    }
    
  2. Zsynchronizuj projekt z plikami narzędzia Gradle. Aby zsynchronizować projekt, w menu Plik wybierz pozycję Synchronizuj projekt z plikami Gradle.

Dodawanie przycisku do Activity_main.xml

W pliku układu app/src/main/res/layout/activity_main.xml dodaj następujący kod, aby utworzyć przycisk w celu uruchomienia złożonego pliku:

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

Inicjowanie kompozytu

Aby zainicjować kompozyt:

  1. Przejdź do MainActivity.

  2. Dodaj następujący kod, aby zainicjować komponenty złożone do wykonywania połączeń. Zastąp "GROUP_CALL_ID" element identyfikatorem grupy dla połączenia. Zastąp "DISPLAY_NAME" swoim imieniem. Zastąp "USER_ACCESS_TOKEN" swoim tokenem.

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 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 callComposite: CallComposite = CallCompositeBuilder()
            .applicationContext(this.applicationContext)
            .credential(communicationTokenCredential)
            .displayName("DISPLAY_NAME").build()
        
        callComposite.launch(this, locator)
    }

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

Uruchamianie kodu

W programie Android Studio skompiluj i uruchom aplikację:

  1. Wybierz pozycję Uruchom.
  2. Zaakceptuj uprawnienia, a następnie wybierz ustawienia urządzenia, mikrofonu i wideo.
  3. Wybierz opcję Dołącz do rozmowy.

Animacja GIF przedstawiająca przykład uruchamiania projektu na urządzeniu z systemem Android.

Model obiektów

Następujące klasy i interfejsy obsługują niektóre kluczowe funkcje interfejsu użytkownika systemu Android usług Azure Communication Services:

Nazwa/nazwisko Opis
CallComposite Składnik złożony, który renderuje środowisko wywołania z galerią uczestników i kontrolkami
CallCompositeBuilder Narzędzie do kompilowania CallComposite z opcjami
CallCompositeJoinMeetingLocator Przekazano CallComposite, aby rozpocząć połączenie grupowe
CallCompositeTeamsMeetingLinkLocator Przekazano do uruchomienia w celu dołączenia do CallComposite spotkania w usłudze Microsoft Teams
CallCompositeLocalizationOptions Wstrzykiwany jako opcjonalny w elemencie CallCompositeBuilder, aby ustawić język kompozytu

Funkcje biblioteki interfejsu użytkownika

Pobierz kod, aby utworzyć kluczowe funkcje komunikacji dla aplikacji systemu Android.

Konfigurowanie uwierzytelniania

Aby skonfigurować uwierzytelnianie, wewnątrz funkcji startCallComposite zainicjuj instancję CommunicationTokenCredential. Zastąp "USER_ACCESS_TOKEN" element tokenem dostępu.

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

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

val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)

Utwórz CallComposite

Aby utworzyć element CallComposite, wewnątrz funkcji startCallComposite zainicjuj instancję CallCompositeBuilder z kontekstem aplikacji, poświadczeniami i nazwą wyświetlaną.

val callComposite: CallComposite = CallCompositeBuilder()
            .applicationContext(this.applicationContext)
            .credential(communicationTokenCredential)
            .displayName("DISPLAY_NAME").build()

Skonfiguruj połączenie grupowe

Aby skonfigurować połączenie grupowe, zainicjuj CallCompositeGroupCallLocator.

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

Dołącz do spotkania w Teams

Możesz dołączyć do spotkania usługi Teams przy użyciu dwóch mechanizmów:

  • Adres URL spotkania w aplikacji Teams lub skrócony adres URL spotkania w aplikacji Teams
  • Identyfikator spotkania w aplikacji Teams i kod dostępu

Link do spotkania usługi Teams można pobrać przy użyciu interfejsów API programu Graph, które są szczegółowo opisane w dokumentacji programu Graph.

Zestaw SDK połączeń usługi Communication Services obsługuje pełny link do spotkania w usłudze Teams. Ten link jest zwracany jako część zasobu onlineMeeting, dostępnego we właściwości joinWebUrl. Wymagane informacje o spotkaniu możesz również uzyskać z adresu URL Dołącz do spotkania w samym zaproszeniu na spotkanie w aplikacji Teams.

Dołącz za pomocą adresu URL spotkania w aplikacji Teams

Aby dołączyć do spotkania usługi Microsoft Teams, utwórz obiekt CallCompositeTeamsMeetingLinkLocator.

val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")

Dołącz za pomocą identyfikatora spotkania w usłudze Teams i kodu dostępu

CallCompositeTeamsMeetingLinkLocator wyszukuje spotkanie przy użyciu identyfikatora spotkania i kodu dostępu. Można je znaleźć w informacjach o dołączaniu do spotkania w usłudze Teams. Identyfikator spotkania usługi Teams ma długość 12 znaków i składa się z cyfr liczbowych pogrupowanych w trójkach (tj. 000 000 000 000). Kod dostępu składa się z 6 znaków alfabetu (tj. aBcDeF). W kodzie dostępu jest uwzględniana wielkość liter.

val locator = CallCompositeTeamsMeetingIdLocator("TEAMS_MEETING_ID", "TEAMS_MEETING_PASSCODE")

Skonfiguruj połączenie Rooms

Aby skonfigurować połączenie usługi Azure Communication Services Rooms, zainicjuj CallCompositeRoomLocator przy użyciu identyfikatora pokoju. Na ekranie konfiguracji CallComposite włącza dostęp do kamery i mikrofonu wszystkim uczestnikom o dowolnej roli w pokoju. Rzeczywista aktualna rola i możliwości uczestnika są pobierane z usług Azure Communication Services po nawiązaniu połączenia.

Aby uzyskać więcej informacji o pokojach, sposobie tworzenia i zarządzania nimi, zobacz Przewodnik Szybki start dotyczący pokoi

val locator = CallCompositeRoomLocator("<ROOM_ID>")

Skonfiguruj połączenie wychodzące 1:N oraz powiadomienia push o połączeniach przychodzących

Biblioteka interfejsu użytkownika obsługuje połączenia VoIP jeden na jeden, umożliwiając nawiązywanie połączeń z użytkownikami przy użyciu identyfikatora komunikacyjnego. Aby otrzymywać połączenia przychodzące, biblioteka interfejsu użytkownika połączeń przychodzących obsługuje również rejestrację do powiadomień PUSH. Aby dowiedzieć się więcej na temat integracji z platformą Android i systemem iOS oraz użyciem interfejsu API, zobacz How to make one-to-one call and receive PUSH notifications (Jak wykonać wywołanie "jeden do jednego" i otrzymywać powiadomienia PUSH).

Uruchamianie złożonego

Aby uruchomić interfejs połączenia, wewnątrz funkcji startCallComposite wywołaj launch na instancji CallComposite.

callComposite.launch(activityContext, locator)

Subskrybowanie zdarzeń błędów CallComposite

Aby odbierać zdarzenia błędów, wywołaj setOnErrorHandler z użyciem CallComposite.

Do programu obsługi błędów mogą zostać wysłane następujące errorCode wartości:

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

W poniższym przykładzie pokazano zdarzenie błędu dla zdarzenia złożonego, które zakończyło się niepowodzeniem.

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

Stosowanie konfiguracji motywu

Aby zmienić kolor podstawowy złożonego, utwórz nowy styl motywu w pliku src/main/res/values/themes.xml i src/main/res/values-night/themes.xml przy użyciu AzureCommunicationUICalling.Theme jako motywu nadrzędnego. Aby zastosować motyw, wprowadź identyfikator motywu w pliku 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()

Stosowanie konfiguracji lokalizacji

Aby zmienić język kompozytu, użyj CallCompositeSupportedLocale, aby utworzyć CallCompositeLocalizationOptions za pomocą Locale. Aby zastosować język, należy wstrzyknąć konfigurację lokalizacji w pliku CallCompositeBuilder. Domyślnie wszystkie etykiety tekstowe używają ciągów angielskich (en). Możesz użyć CallCompositeLocalizationOptions, aby ustawić inną wartość dla language. Domyślnie biblioteka UI zawiera zestaw wartości language, których możesz używać z komponentami UI. CallCompositeSupportedLocale zawiera obsługiwane ustawienia regionalne. Aby na przykład uzyskać dostęp do ustawień regionalnych w języku angielskim, możesz użyć polecenia CallCompositeSupportedLocale.EN. CallCompositeSupportedLocale.getSupportedLocales() Zawiera listę obiektów ustawień regionalnych dla obsługiwanych języków.

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

Subskrybowanie zdarzenia zmiany stanu połączenia w komponencie CallComposite

Aby otrzymywać zdarzenia zmiany stanu połączenia, wywołaj addOnCallStateChangedEventHandler z parametrem CallComposite.

Poniższy przykład przedstawia zdarzenie zmiany stanu połączenia.

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

Odrzucanie wywołaniaComposite i subskrybowanie odrzuconego zdarzenia

Aby otrzymać zdarzenie dismiss, wywołaj addOnDismissedEventHandler za pomocą CallComposite. Aby odrzucić metodę CallComposite, wywołaj metodę dismiss.

W poniższym przykładzie przedstawiono zdarzenie zmiany stanu połączenia.

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

callComposite.dismiss()

Więcej funkcji

Lista przypadków użycia zawiera szczegółowe informacje o dodatkowych funkcjach.

Dodawanie powiadomień do aplikacji mobilnej

Usługi Azure Communication Services integrują się z usługami Azure Event Grid i Azure Notification Hubs, dzięki czemu można dodawać powiadomienia wypychane do aplikacji na platformie Azure. Możesz używać powiadomień push do wysyłania informacji z aplikacji do urządzeń mobilnych użytkowników. Powiadomienie push może wyświetlać okno dialogowe, odtwarzać dźwięk lub wyświetlać interfejs połączenia przychodzącego.

Pobierz przykładową aplikację systemu iOS dla tego przewodnika Szybki start w bibliotece interfejsu użytkownika usług Azure Communication Services typu open source dla systemu iOS.

Wymagania wstępne

  • Konto platformy Azure i aktywna subskrypcja platformy Azure. Utwórz konto bezpłatnie.
  • Mac z zainstalowanym programem Xcode 13 lub nowszym oraz ważnym certyfikatem deweloperskim zainstalowanym w pęku kluczy. CocoaPods musi być również zainstalowany, aby pobierać zależności.
  • Wdrożony zasób usług Azure Communication Services.
  • Token dostępu usługi Azure Communication Services.

Konfigurowanie projektu

Wykonaj poniższe sekcje, aby skonfigurować projekt Szybki start.

Tworzenie nowego projektu Xcode

W programie Xcode utwórz nowy projekt:

  1. W menu Plik wybierz pozycję Nowy>projekt.

  2. W sekcji Wybierz szablon dla nowego projektu wybierz platformę iOS oraz szablon aplikacji App. W przewodniku Szybki start są używane scenorysy UIKit. Przewodnik Szybki start nie tworzy testów, więc możesz wyczyścić pole wyboru Uwzględnij testy.

    Zrzut ekranu przedstawiający okno dialogowe nowego projektu Xcode z wybranym szablonem aplikacji i systemem iOS.

  3. W obszarze Wybierz opcje nowego projektu wprowadź nazwę produktu UILibraryQuickStart. Jako interfejs wybierz Storyboard.

    Zrzut ekranu przedstawiający ustawianie nowych opcji projektu w programie Xcode.

Instalowanie pakietu i zależności

  1. (Opcjonalnie) W przypadku komputerów MacBook z językiem M1 zainstaluj i włącz aplikację Rosetta w środowisku Xcode.

  2. W katalogu głównym projektu uruchom polecenie pod init , aby utworzyć plik Podfile. Jeśli wystąpi błąd, zaktualizuj aplikację CocoaPods do bieżącej wersji.

  3. Dodaj następujący kod do pliku Podfile. Zastąp UILibraryQuickStart nazwą swojego projektu.

    platform :ios, '16.0'
    
    target 'UILibraryQuickStart' do
        use_frameworks!
        pod 'AzureCommunicationUICalling'
    end
    
  4. Uruchom program pod install --repo-update.

  5. W programie Xcode otwórz plik generated.xcworkspace*.

Żądanie dostępu do sprzętu urządzenia

Aby uzyskać dostęp do sprzętu urządzenia, w tym mikrofonu i aparatu fotograficznego, zaktualizuj listę właściwości informacji aplikacji. Ustaw powiązaną wartość jako ciąg znaków wyświetlany w oknie dialogowym, którego system używa, aby poprosić użytkownika o udzielenie dostępu.

  1. Kliknij prawym przyciskiem myszy element Info.plist w drzewie projektu i wybierz pozycję Otwórz jako>Kod źródłowy. Dodaj następujące wiersze do sekcji najwyższego poziomu <dict> , a następnie zapisz plik.

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

    Oto przykład kodu źródłowego Info.plist w pliku Xcode:

    Zrzut ekranu przedstawiający przykład kodu źródłowego pliku Info.plist w pliku Xcode.

  2. Aby sprawdzić, czy żądania uprawnień urządzenia zostały dodane poprawnie, wybierz Otwórz jako>Lista właściwości. Sprawdź, czy lista właściwości informacji wygląda podobnie do poniższego przykładu:

    Zrzut ekranu przedstawiający prywatność aparatu i mikrofonu urządzenia w programie Xcode.

Wyłącz kod bitowy

W projekcie Xcode w obszarze Ustawienia kompilacji ustaw opcję Włącz kod bitowy na Nie. Aby znaleźć to ustawienie, zmień filtr z Podstawowe na Wszystkie lub użyj paska wyszukiwania.

Zrzut ekranu przedstawiający opcję Ustawienia kompilacji, aby wyłączyć kod bitowy.

Inicjowanie kompozytu

Aby zainicjować kompozyt:

  1. Przejdź do ViewController.

  2. Dodaj poniższy kod, aby zainicjować komponenty złożone na potrzeby połączenia. Zastąp <GROUP_CALL_ID> identyfikatorem grupy dla połączenia lub symbolem UUID(), aby wygenerować identyfikator grupy dla połączenia. Zastąp <DISPLAY_NAME> swoim imieniem. (Limit długości ciągu dla <DISPLAY_NAME> to 256 znaków). Zastąp <USER_ACCESS_TOKEN> element tokenem dostępu.

    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(displayName: "<DISPLAY_NAME>")
            let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
    
            callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions)
    
            callComposite?.launch(locator: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!))
        }
    }
    

Uruchamianie kodu

Aby skompilować i uruchomić aplikację w symulatorze systemu iOS, wybierz pozycję Uruchom produkt>lub użyj skrótu klawiaturowego (⌘-R). Następnie wypróbuj działanie połączenia w symulatorze:

  1. Wybierz pozycję Rozpocznij.

  2. Zaakceptuj uprawnienia audio, a następnie wybierz ustawienia urządzenia, mikrofonu i wideo.

  3. Wybierz pozycję Rozpocznij połączenie.

Animacja GIF, która pokazuje ostateczny wygląd i działanie aplikacji szybki start dla systemu iOS.

Model obiektów

Następujące klasy i interfejsy obsługują niektóre kluczowe funkcje biblioteki klienta interfejsu użytkownika usług Azure Communication Services:

Nazwa/nazwisko Opis
CallComposite Składnik, który renderuje środowisko wywołania z galerią uczestników i kontrolkami
CallCompositeOptions Ustawienia opcji, takich jak motywy i obsługa zdarzeń
Opcje motywu Opcje dostosowywania motywu złożonego
Opcje lokalizacji Opcje języka złożonego

Funkcje biblioteki interfejsu użytkownika

Pobierz kod, aby utworzyć kluczowe funkcje komunikacji dla aplikacji systemu iOS.

Konfigurowanie uwierzytelniania

Aby skonfigurować uwierzytelnianie, wewnątrz funkcji startCallComposite zainicjuj instancję CommunicationTokenCredential. Zastąp <USER_ACCESS_TOKEN> element tokenem dostępu.

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

Jeśli nie masz jeszcze tokenu dostępu, utwórz token dostępu usług Azure Communication Services.

Utwórz CallComposite

Aby utworzyć element CallComposite, wewnątrz funkcji startCallComposite zainicjuj instancję CallCompositeOptions z opcjonalnym <DISPLAY_NAME> i instancją CommunicationTokenCredential:

@objc private func startCallComposite() {
    let callCompositeOptions = CallCompositeOptions(displayName: "<DISPLAY_NAME>")
    let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")

    callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions)
}

Skonfiguruj połączenie grupowe

Aby skonfigurować połączenie grupowe, wewnątrz funkcji startCallComposite zainicjuj lokalizator .groupCall. Zastąp <GROUP_CALL_ID> element identyfikatorem grupy dla połączenia.

// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let locator = .groupCall(groupId: uuid)

Aby uzyskać więcej informacji na temat używania identyfikatora grupy do wywołań, zobacz Zarządzanie wywołaniami.

Dołącz do spotkania w Teams

Możesz dołączyć do spotkania usługi Teams przy użyciu dwóch mechanizmów:

  • Adres URL spotkania w aplikacji Teams lub skrócony adres URL spotkania w aplikacji Teams
  • Identyfikator spotkania w aplikacji Teams i kod dostępu

Link do spotkania usługi Teams można pobrać przy użyciu interfejsów API programu Graph, które są szczegółowo opisane w dokumentacji programu Graph.

Zestaw SDK połączeń usługi Communication Services obsługuje pełny link do spotkania w usłudze Teams. Ten link jest zwracany jako część zasobu onlineMeeting, dostępnego we właściwości joinWebUrl. Wymagane informacje o spotkaniu możesz również uzyskać z adresu URL Dołącz do spotkania w samym zaproszeniu na spotkanie w aplikacji Teams.

Dołącz za pomocą adresu URL spotkania w aplikacji Teams

Aby dołączyć do spotkania Microsoft Teams, wewnątrz funkcji startCallComposite zainicjuj instancję lokalizatora .teamsMeeting. Zastąp <TEAMS_MEETING_LINK> linkiem do spotkania w aplikacji Teams dla Twojej rozmowy. Zastąp <DISPLAY_NAME> swoim imieniem.

let locator = .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>")

Dołącz za pomocą identyfikatora spotkania w usłudze Teams i kodu dostępu

teamMeetingId wyszukuje spotkanie przy użyciu identyfikatora spotkania i kodu dostępu. Można je znaleźć w informacjach o dołączaniu do spotkania w usłudze Teams. Identyfikator spotkania usługi Teams ma długość 12 znaków i składa się z cyfr liczbowych pogrupowanych w trójkach (tj. 000 000 000 000). Kod dostępu składa się z 6 znaków alfabetu (tj. aBcDeF). W kodzie dostępu jest uwzględniana wielkość liter.

let locator = .teamsMeetingId(meetingId: "<TEAMS_MEETING_ID>", meetingPasscode:  "<TEAMS_MEETING_PASSCODE>" )

Konfigurowanie połączenia pokoju

Aby skonfigurować połączenie usługi Azure Communication Services Rooms, zainicjuj CallCompositeRoomLocator przy użyciu identyfikatora pokoju. Na ekranie konfiguracji CallComposite włączy kamerę i mikrofon wszystkim uczestnikom, niezależnie od roli w pokoju. Rzeczywista aktualna rola i możliwości uczestnika są pobierane z usług Azure Communication Services po nawiązaniu połączenia.

Aby uzyskać więcej informacji o pokojach, jak utworzyć i zarządzać nimi, zobacz Przewodnik Szybki start dotyczący pokoi

let locator = .roomCall(roomId: "<ROOM_ID>")

Skonfiguruj połączenie wychodzące 1:N oraz powiadomienia push o połączeniach przychodzących

Biblioteka interfejsu użytkownika obsługuje połączenia VoIP jeden na jeden, umożliwiając nawiązywanie połączeń z użytkownikami przy użyciu identyfikatora komunikacyjnego. Aby otrzymywać połączenia przychodzące, biblioteka interfejsu użytkownika połączeń przychodzących obsługuje również rejestrację do powiadomień PUSH. Aby dowiedzieć się więcej na temat integracji z platformą Android i systemem iOS oraz użyciem interfejsu API, zobacz How to make one-to-one call and receive PUSH notifications (Jak wykonać wywołanie "jeden do jednego" i otrzymywać powiadomienia PUSH).

Uruchamianie złożonego

Wewnątrz funkcji startCallComposite wywołaj launch na instancji CallComposite:

callComposite?.launch(locator: locator)

Subskrybowanie zdarzeń

Zamknięcia można zaimplementować w celu działania na zdarzeniach złożonych. Następujące kody błędów mogą zostać wysłane do programu obsługi błędów:

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

W poniższym przykładzie pokazano zdarzenie błędu dla zdarzenia złożonego, które zakończyło się niepowodzeniem:

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

Zastosuj opcje motywu

Aby dostosować komunikację w aplikacji, utwórz niestandardowe opcje motywu, które implementują protokół ThemeOptions. Uwzględnij wystąpienie nowej klasy w pliku CallCompositeOptions:

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

Aby uzyskać więcej informacji na temat sposobu działania motywów, zobacz przewodnik po motywach.

Stosowanie opcji lokalizacji

Aby zmienić język w zestawie, utwórz niestandardowe opcje lokalizacji i uwzględnij je w pliku CallCompositeOptions. Domyślnie wszystkie etykiety tekstowe używają ciągów angielskich (SupportedLocale.en). Możesz użyć LocalizationOptions, aby ustawić inną wartość dla locale. Domyślnie biblioteka interfejsu użytkownika zawiera zestaw wartości locale, których można używać z komponentami interfejsu użytkownika. SupportedLocale.values Zawiera listę wszystkich obsługiwanych języków.

W poniższym przykładzie kompozyt jest zlokalizowany do języka francuskiego (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) 

Aby uzyskać więcej informacji na temat lokalizacji i listy obsługiwanych języków, zobacz przewodnik dotyczący lokalizacji.

Subskrybowanie zdarzenia zmiany stanu połączenia w komponencie CallComposite

Zamknięcia można zaimplementować w celu działania na zdarzeniach złożonych. Stany wywołań są wysyłane do procedury obsługi zmiany stanu wywołania.

W poniższym przykładzie przedstawiono zdarzenie zmiany stanu połączenia.

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

Odrzucanie wywołaniaComposite i subskrybowanie odrzuconego zdarzenia

Aby odrzucić metodę CallComposite, wywołaj metodę dismiss. Następujące zdarzenie odrzucenia jest wysyłane w przypadku odrzucenia złożonego wywołania:

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

callComposite.dismiss()

Więcej funkcji

Lista przypadków użycia zawiera szczegółowe informacje o dodatkowych funkcjach.

Dodawanie powiadomień do aplikacji mobilnej

Usługi Azure Communication Services integrują się z usługami Azure Event Grid i Azure Notification Hubs, dzięki czemu można dodawać powiadomienia wypychane do aplikacji na platformie Azure. Możesz używać powiadomień push do wysyłania informacji z aplikacji do urządzeń mobilnych użytkowników. Powiadomienie push może wyświetlać okno dialogowe, odtwarzać dźwięk lub wyświetlać interfejs połączenia przychodzącego.

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług Komunikacyjnych, możesz usunąć zasób lub grupę zasobów.

Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.

Dowiedz się więcej o czyszczeniu zasobów.