Szybki start: wprowadzenie do biblioteki interfejsu użytkownika

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ług Communication Services renderuje pełne środowisko komunikacji bezpośrednio w aplikacji. Zajmuje się nawiązywaniem połączenia z połączeniem i konfiguruje udział użytkownika w wywołaniu za kulisami. Jako deweloper musisz martwić się o to, gdzie w środowisku użytkownika aplikacji chcesz, aby środowisko komunikacji było uruchamiane. Złożona aplikacja przenosi użytkownika przez konfigurowanie swoich urządzeń, dołączanie do połączenia i udział w nim oraz renderowanie innych uczestników.

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

Uwaga

Aby uzyskać szczegółową dokumentację i przewodniki Szybki start dotyczące biblioteki interfejsu użytkownika sieci Web, odwiedź artykuł Storybook biblioteki interfejsu użytkownika sieci Web.

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.

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

  3. Wybierz pozycję Dalej.

  4. W polu Empty Activity (Puste działanie) nadaj projektowi nazwę UILibraryQuickStart. W polu Język wybierz pozycję Java/Kotlin. W przypadku minimalnego zestawu SDK wybierz pozycję INTERFEJS API 21: Android 5.0 (Lollipop) lub nowszy.

  5. Wybierz Zakończ.

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

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 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 przypadku programu Android Studio (2020.*) repositories znajduje się w elemecie w settings.gradleobszarze 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 pliku 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 złożonego

Aby zainicjować złożony:

  1. Przejdź do MainActivity.

  2. Dodaj następujący kod, aby zainicjować składniki złożone do wywołania. Zastąp "GROUP_CALL_ID" element identyfikatorem grupy dla połączenia. Zastąp "DISPLAY_NAME" ciąg swoim imieniem i nazwiskiem. Zastąp "USER_ACCESS_TOKEN" element 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 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"
    }
}

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.

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

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 Konstruktor, który kompiluje z CallComposite opcjami
CallCompositeJoinMeetingLocator Uruchamianie przekazywane w CallComposite celu uruchomienia wywołania grupy
CallCompositeTeamsMeetingLinkLocator Przekazano do uruchomienia w celu dołączenia do CallComposite spotkania w usłudze Microsoft Teams
CallCompositeLocalizationOptions Iniekcji jako opcjonalnej w CallCompositeBuilder celu ustawienia języka złożonego

Funkcje biblioteki interfejsu użytkownika

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

Tworzenie elementu CallComposite

Aby utworzyć CallCompositeelement , wewnątrz startCallComposite funkcji zainicjuj CallCompositeBuilderCallComposite wystąpienie i wystąpienie.

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

Konfigurowanie uwierzytelniania

Aby skonfigurować uwierzytelnianie, wewnątrz funkcji zainicjuj startCallCompositeCommunicationTokenCredential wystąpienie. Zastąp "USER_ACCESS_TOKEN" element tokenem dostępu.

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

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

val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)

Konfigurowanie wywołania grupy

Aby skonfigurować wywołanie grupy, zainicjuj CallCompositeRemoteOptions element CallCompositeGroupCallLocator i podaj go do obiektu.

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

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

Konfigurowanie spotkania usługi Teams

Aby skonfigurować spotkanie usługi Microsoft Teams, zainicjuj CallCompositeRemoteOptions obiekt CallCompositeTeamsMeetingLinkLocator i podaj go do obiektu.

val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")

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

Konfigurowanie połączenia z pokojem

Ważne

Ta funkcja usług Azure Communication Services jest obecnie dostępna w wersji zapoznawczej.

Interfejsy API i zestawy SDK w wersji zapoznawczej są udostępniane bez umowy dotyczącej poziomu usług. Zalecamy, aby nie używać ich w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości.

Aby uzyskać więcej informacji, zapoznaj się z dodatkowymi warunkami użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Aby skonfigurować wywołanie usługi Azure Communication Services Rooms, zainicjuj CallCompositeRoomLocatorelement , podaj go do CallCompositeRemoteOptions obiektu i ustaw CallCompositeParticipantRole na CallCompositeLocalOptions wartość by setRoleHint(). CallComposite przed nawiązaniem połączenia z wywołaniem użyje wskazówki dotyczącej roli. Po nawiązaniu połączenia rzeczywista aktualna rola uczestnika jest pobierana z usług Azure Communication Services.

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

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

val localOptions = CallCompositeLocalOptions().setRoleHint(participantRole)

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

Uruchamianie złożonego

Aby uruchomić interfejs użytkownika wywołania, wewnątrz startCallComposite funkcji wywołaj launchCallComposite wystąpienie.

callComposite.launch(context, remoteOptions)

Subskrybowanie zdarzeń błędów CallComposite

Aby odbierać zdarzenia błędów, wywołaj metodę za pomocą polecenia setOnErrorHandlerCallComposite.

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 elementu 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 złożonego, użyj polecenia , aby utworzyć CallCompositeLocalizationOptions element za pomocą Localepolecenia CallCompositeSupportedLocale . 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 polecenia , aby ustawić inną wartość dla languageelementu . Domyślnie biblioteka interfejsu użytkownika zawiera zestaw wartości, których można używać ze składnikami interfejsu language użytkownika. CallCompositeSupportedLocale udostępnia 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()

Zasubskrybuj zdarzenie zmiany stanu wywołania elementu CallComposite

Aby odbierać zdarzenia zmiany stanu wywołania, wywołaj metodę za pomocą CallCompositepolecenia addOnCallStateChangedEventHandler .

W poniższym przykładzie pokazano zdarzenie zmiany stanu wywołania.

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

Odrzucanie wywołaniaComposite i subskrybowanie odrzuconego zdarzenia

Aby odebrać odrzucenie, wywołaj metodę za pomocą polecenia addOnDismissedEventHandlerCallComposite. Aby odrzucić metodę CallComposite, wywołaj metodę dismiss.

W poniższym przykładzie pokazano zdarzenie zmiany stanu wywołania.

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. Powiadomienia wypychane umożliwiają wysyłanie informacji z aplikacji do urządzeń przenośnych użytkowników. Powiadomienie wypychane może wyświetlać okno dialogowe, odtwarzać dźwięk lub wyświetlać przychodzący interfejs użytkownika połączenia.

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

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 obszarze Wybierz szablon dla nowego projektu wybierz platformę systemu iOS i wybierz szablon Aplikacja aplikacji . W przewodniku Szybki start są używane scenorysy UIKit. Przewodnik Szybki start nie tworzy testów, więc można wyczyścić pole wyboru Uwzględnij testy .

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

  3. W obszarze Wybierz opcje nowego projektu wprowadź nazwę produktu UILibraryQuickStart. W przypadku interfejsu wybierz pozycję Scenorys.

    Screenshot that shows setting new project options in 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 ciąg nazwą projektu.

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

  5. W programie Xcode otwórz wygenerowany plik 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 skojarzona wartość na ciąg zawarty w oknie dialogowym używanym przez system do żądania dostępu od użytkownika.

  1. Kliknij prawym przyciskiem myszy Info.plist wpis drzewa 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:

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

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

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

Wyłącz kod bitowy

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

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

Inicjowanie złożonego

Aby zainicjować złożony:

  1. Przejdź do ViewController.

  2. Dodaj następujący kod, aby zainicjować składniki złożone dla wywołania. Zastąp <GROUP_CALL_ID> ciąg identyfikatorem grupy dla połączenia lub elementem , UUID() aby wygenerować identyfikator grupy dla wywołania. Zastąp <DISPLAY_NAME> ciąg swoim imieniem i nazwiskiem. (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()
    
            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)
        }
    }
    

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 środowisko wywołania w symulatorze:

  1. Wybierz pozycję Rozpocznij środowisko.

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

  3. Wybierz pozycję Rozpocznij połączenie.

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

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 dla opcji, takich jak motywy i obsługa zdarzeń
RemoteOptions Zdalne opcje wysyłania do usług Azure Communication Services w celu dołączenia do połączenia grupowego lub spotkania usługi Teams.
MotywOpcje Opcje dostosowywania motywu złożonego
LokalizacjaOpcje Opcje języka złożonego

Funkcje biblioteki interfejsu użytkownika

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

Tworzenie elementu CallComposite

Aby utworzyć CallCompositeelement wewnątrz startCallComposite funkcji, zainicjuj CallCompositeOptionsCallComposite wystąpienie i wystąpienie:

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

    callComposite = CallComposite(withOptions: callCompositeOptions)
}

Konfigurowanie uwierzytelniania

Aby skonfigurować uwierzytelnianie, wewnątrz funkcji zainicjuj startCallCompositeCommunicationTokenCredential wystąpienie. 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.

Konfigurowanie wywołania grupy

Aby skonfigurować wywołanie grupy, wewnątrz startCallComposite funkcji zainicjuj RemoteOptions wystąpienie lokalizatora .groupCall . Zastąp <GROUP_CALL_ID> element identyfikatorem grupy dla połączenia. Zastąp <DISPLAY_NAME> ciąg swoim imieniem i nazwiskiem.

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

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

Konfigurowanie spotkania usługi Teams

Aby skonfigurować spotkanie usługi Microsoft Teams, wewnątrz startCallComposite funkcji zainicjuj RemoteOptions wystąpienie lokalizatora .teamsMeeting . Zastąp <TEAMS_MEETING_LINK> ciąg linkiem do spotkania usługi Teams dla twojego połączenia. Zastąp <DISPLAY_NAME> ciąg swoim imieniem i nazwiskiem.

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

Link do spotkania usługi Microsoft Teams można uzyskać przy użyciu interfejsów API programu Graph. Ten proces został szczegółowo opisany w dokumentacji programu Graph.

Zestaw SDK połączeń usług komunikacyjnych akceptuje pełny link do spotkania usługi Microsoft Teams. Ten link jest zwracany jako część onlineMeeting zasobu w ramach właściwości joinWebUrl. Wymagane informacje o spotkaniu można również uzyskać z adresu URL spotkania dołączenia w zaproszeniu do spotkania usługi Teams.

Konfigurowanie połączenia z pokojem

Ważne

Ta funkcja usług Azure Communication Services jest obecnie dostępna w wersji zapoznawczej.

Interfejsy API i zestawy SDK w wersji zapoznawczej są udostępniane bez umowy dotyczącej poziomu usług. Zalecamy, aby nie używać ich w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości.

Aby uzyskać więcej informacji, zapoznaj się z dodatkowymi warunkami użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Aby skonfigurować wywołanie usługi Azure Communication Services Rooms, wewnątrz startCallComposite funkcji zainicjuj RemoteOptions wystąpienie lokalizatora .roomCall . Zastąp <ROOM_ID> element identyfikatorem pokoju dla połączenia. Zainicjuj LocalOptions wystąpienie za pomocą polecenia roleHint.

Zastąp <DISPLAY_NAME> ciąg swoim imieniem i nazwiskiem.

CallComposite przed nawiązaniem połączenia z wywołaniem użyje wskazówki dotyczącej roli. Po nawiązaniu połączenia rzeczywista aktualna rola uczestnika jest pobierana z usług Azure Communication Services.

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

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)

Uruchamianie złożonego

startCallComposite Wewnątrz funkcji wywołaj launchCallComposite wystąpienie:

callComposite?.launch(remoteOptions: remoteOptions)

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ć środowisko komunikacji w aplikacji, utwórz niestandardowe opcje motywu, które implementują ThemeOptions protokół. 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 polecenia , aby ustawić inną wartość dla localeelementu . Domyślnie biblioteka interfejsu locale użytkownika zawiera zestaw wartości, których można używać ze składnikami interfejsu użytkownika. SupportedLocale.values Zawiera listę wszystkich obsługiwanych języków.

W poniższym przykładzie złożony jest zlokalizowany na francuski (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.

Zasubskrybuj zdarzenie zmiany stanu wywołania elementu CallComposite

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

W poniższym przykładzie pokazano zdarzenie zmiany stanu wywołania.

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

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. Powiadomienia wypychane umożliwiają wysyłanie informacji z aplikacji do urządzeń przenośnych użytkowników. Powiadomienie wypychane może wyświetlać okno dialogowe, odtwarzać dźwięk lub wyświetlać przychodzący interfejs użytkownika połączenia.

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.