Mulai Cepat: Mulai menggunakan Pustaka UI
Memulai Azure Communication Services menggunakan Pustaka UI untuk mengintegrasikan pengalaman komunikasi dengan cepat ke dalam aplikasi Anda. Dalam mulai cepat ini, Anda akan mempelajari cara mengintegrasikan komposit ke dalam aplikasi Anda.
Pustaka UI akan memberikan pengalaman komunikasi penuh secara langsung ke aplikasi Anda. Pustaka ini bertugas menyambungkan ke panggilan yang diinginkan serta mengaturnya. Sebagai pengembang, Anda hanya perlu memikirkan tempat pengalaman komunikasi ingin Anda luncurkan. Komposit memandu pengguna menyiapkan perangkat mereka, bergabung dengan panggilan sekaligus berpartisipasi di dalamnya, dan merender peserta lain.
Catatan
Untuk dokumentasi dan mulai cepat terperinci tentang Pustaka Antarmuka Pengguna Web, kunjungi Buku Cerita Pustaka UI Web.
Prasyarat
- Akun Azure dengan langganan aktif. Membuat akun secara gratis.
- Sumber daya Communication Services yang disebarkan. Membuat sumber daya Azure Communication Services.
- Token Azure Communication Services. Lihat contoh
Anda dapat mengakses mulai cepat berikut
Pustaka sumber terbuka Azure Communication UI untuk Android dan kode aplikasi sampel dapat ditemukan di sini
Prasyarat
- Akun Azure dengan langganan aktif. Membuat akun secara gratis.
- OS yang menjalankan Android Studio.
- Sumber daya Communication Services yang disebarkan. Membuat sumber daya Azure Communication Services.
- Token Azure Communication Services. Lihat contoh
Persiapan
Membuat aplikasi Android dengan aktivitas kosong
Di Android Studio, buat proyek baru dan pilih Empty Activity.

Klik tombol Next dan beri nama proyek UILibraryQuickStart, atur bahasa ke Java/Kotlin dan pilih SDK API 21: Android 5.0 (Lollipop) Minimum atau lebih tinggi.

Klik Finish.
Menginstal paket
Tambahkan Dependensi
Di tingkat aplikasi Anda (folder aplikasi) UILibraryQuickStart/app/build.gradle, tambahkan dependensi berikut.
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-calling:+'
...
}
Repositori Maven
Dua repositori maven diperlukan untuk mengintegrasikan pustaka. MavenCentral adalah yang pertama, yang kedua adalah repositori paket Azure.
Dalam skrip gradle proyek Anda, pastikan hal berikut repositories ditambahkan.
Untuk Android Studio (2020.*), repositories berada di settings.gradledependencyResolutionManagement(Gradle version 6.8 or greater).
Jika Anda menggunakan versi lama , Android Studio (4.*)maka repositories akan berada di tingkat build.gradleallprojects{}proyek .
// dependencyResolutionManagement
repositories {
...
mavenCentral()
maven {
url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
}
...
}
Sinkronkan proyek dengan file gradle. (Android Studio -> File -> Menyinkronkan proyek dengan file Gradle)
Tambahkan tombol ke activity_main
Buka file tata letak (app/src/main/res/layout/activity_main.xml). Di sini kami akan memberikan kode untuk membuat tombol untuk memulai komposit.
<?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>
Menginisialisasi komposit
Buka MainActivity. Di sini kami akan memberikan kode untuk menginisialisasi Komponen Komposit untuk Panggilan. Ganti "GROUP_CALL_ID" dengan ID grup untuk panggilan Anda, "DISPLAY_NAME" dengan nama Anda, dan "<USER_ACCESS_TOKEN>" dengan token Anda.
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"
}
}
Jalankan kode
Bangun dan mulai aplikasi dari Android Studio.
- Klik
Launch. - Terima izin dan pilih pengaturan perangkat, mikrofon, dan video.
- Klik
Join Call.

Model Objek
Kelas dan antarmuka berikut menangani beberapa fitur utama antarmuka pengguna Android Azure Communication Services:
| Nama | Deskripsi |
|---|---|
| CallComposite | Komponen komposit yang merender pengalaman panggilan dengan galeri dan kontrol peserta. |
| CallCompositeBuilder | Builder untuk membangun CallComposite dengan pilihan. |
| CallCompositeJoinMeetingLocator | Diteruskan dalam peluncuran CallComposite untuk memulai panggilan grup. |
| CallCompositeTeamsMeetingLinkLocator | Diteruskan ke peluncuran CallComposite untuk bergabung dalam rapat Teams. |
| CallCompositeLocalizationOptions | Disuntikkan sebagai opsional di CallCompositeBuilder untuk mengatur bahasa komposit. |
Fungsionalitas Pustaka Antarmuka Pengguna
Membuat Komposit Panggilan
Menginisialisasi instans CallCompositeBuilder dan instans CallComposite di dalam fungsi startCallComposite.
Autentikasi penyetelan
Menginisialisasi instans CommunicationTokenCredential di dalam fungsi startCallComposite. Ganti "<USER_ACCESS_TOKEN>" dengan token Anda.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
Menyiapkan Opsi Panggilan Grup atau Rapat Teams
Bergantung pada jenis Panggilan/Rapat yang ingin Anda siapkan, gunakan objek opsi yang sesuai.
Panggilan Grup
Inisialisasi CallCompositeGroupCallLocator dan berikan ke CallCompositeRemoteOptions objek .
val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Rapat Teams
Inisialisasi CallCompositeTeamsMeetingLinkLocator dan berikan ke CallCompositeRemoteOptions objek .
val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
Mendapatkan tautan rapat Microsoft Teams
Tautan rapat Microsoft Teams dapat diambil menggunakan API Graph. Proses ini dirinci dalam dokumentasi Graph.
SDK Panggilan Azure Communication Services menerima tautan rapat Microsoft Teams yang lengkap. Tautan ini dikembalikan sebagai bagian dari sumber daya onlineMeeting, yang dapat diakses di dalam propertijoinWebUrl Anda juga bisa mendapatkan informasi rapat yang diperlukan dari URL Gabung ke Rapat di undangan rapat Teams itu sendiri.
Luncurkan
Memanggil launch pada instans CallComposite di dalam fungsi startCallComposite
Berlangganan peristiwa kesalahan dari CallComposite
Untuk menerima peristiwa kesalahan, panggil setOnErrorHandler dengan CallComposite.
Nilai berikut errorCode dapat dikirim ke Penanganan Kesalahan
CallCompositeErrorCode.CALL_JOIN_FAILEDCallCompositeErrorCode.CALL_END_FAILEDCallCompositeErrorCode.TOKEN_EXPIRED
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
Menerapkan konfigurasi tema
Untuk mengubah warna utama komposit, buat gaya tema baru di src/main/res/values/themes.xml dan src/main/res/values-night/themes.xml dengan mempertimbangkan AzureCommunicationUICalling.Theme sebagai tema utama. Untuk menerapkan tema, injeksikan ID tema di 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()
Menerapkan konfigurasi pelokalan
Untuk mengubah bahasa komposit, buat CallCompositeLocalizationOptions dengan Locale dari CallCompositeSupportedLocale. Untuk menerapkan bahasa, masukkan konfigurasi pelokalan di CallCompositeBuilder. Secara default, semua label teks menggunakan string bahasa Inggris (en). Jika diinginkan, CallCompositeLocalizationOptions dapat digunakan untuk mengatur yang berbeda language. Di luar kotak, pustaka UI menyertakan sekumpulan language yang dapat digunakan dengan komponen UI. CallCompositeSupportedLocale menyediakan Lokal yang didukung. Misalnya, untuk mengakses Bahasa Inggris Lokal, CallCompositeSupportedLocale.EN dapat digunakan. CallCompositeSupportedLocale.getSupportedLocales() menyediakan daftar objek Lokal bahasa yang didukung.
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()
Fitur Lainnya
Daftar kasus penggunaan memiliki informasi terperinci tentang lebih banyak fitur.
Menambahkan pemberitahuan ke aplikasi seluler Anda
Pemberitahuan push memungkinkan Anda mengirim informasi dari aplikasi Anda ke perangkat seluler pengguna. Anda dapat menggunakan pemberitahuan push untuk menampilkan dialog, memutar suara, atau menampilkan antarmuka pengguna panggilan masuk. Azure Communication Services menyediakan integrasi dengan Azure Event Grid dan Azure Notification Hubs yang memungkinkan Anda menambahkan pemberitahuan push ke aplikasi Anda mengikuti tautan.
Pustaka sumber terbuka Azure Communication UI untuk Android dan kode aplikasi sampel dapat ditemukan di sini
Prasyarat
- Akun Azure dengan langganan aktif. Membuat akun secara gratis.
- Mac yang menjalankan Xcode 13+, bersama dengan sertifikat pengembang yang valid yang diinstal ke rantai kunci Anda. CocoaPods juga harus dipasang untuk mengambil dependensi.
- Sumber daya Communication Services yang disebarkan. Membuat sumber daya Azure Communication Services.
- Token Azure Communication Services. Lihat contoh.
Persiapan
Membuat proyek Xcode
Di Xcode, buat proyek iOS baru dan pilih templat Aplikasi . Kita akan menggunakan papan cerita UIKit. Anda tidak akan membuat pengujian selama mulai cepat ini. Jangan ragu untuk menghapus centang Sertakan Pengujian.

Beri nama proyek UILibraryQuickStart dan pilih Storyboard di bawah dropdown Interface.

Memasang paket dan dependensi dengan CocoaPods
- (Opsional) Untuk MacBook dengan M1, instal dan aktifkan Rosetta di Xcode.
- Buat Podfile di direktori akar proyek Anda dengan menjalankan
pod init.- Jika mengalami kesalahan, perbarui CocoaPods ke versi terbaru
- Tambahkan hal berikut ke Podfile Anda:
- Ganti
UILibraryQuickStartdengan nama proyek Anda
- Ganti
platform :ios, '14.0'
target 'UILibraryQuickStart' do
use_frameworks!
pod 'AzureCommunicationUICalling', '1.0.0'
end
- Jalankan
pod install --repo-update. - Buka
.xcworkspaceyang dihasilkan dengan Xcode.
Minta akses ke mikrofon, kamera, dll.
Untuk mengakses perangkat keras perangkat, perbarui Daftar Properti Informasi aplikasi Anda. Atur nilai terkait ke string yang akan disertakan dalam dialog yang digunakan sistem untuk meminta akses dari pengguna.
Klik kanan entri Info.plist pohon proyek dan pilih Buka Sebagai>Kode Sumber. Tambahkan baris berikut ke bagian <dict> tingkat atas, lalu simpan file.
<key>NSCameraUsageDescription</key>
<string></string>
<key>NSMicrophoneUsageDescription</key>
<string></string>

Untuk memverifikasi bahwa permintaan izin ditambahkan dengan benar, tampilkan Info.plist sebagai Buka Sebagai>Daftar Properti dan bersiap untuk melihat aspek berikut:

Nonaktifkan Bitcode
Atur opsi Enable Bitcode ke No dalam proyek Build Settings. Untuk menemukan pengaturan tersebut, Anda harus mengubah filter dari Basic ke All, Anda juga dapat menggunakan bilah pencarian di sebelah kanan.

Menginisialisasi komposit
Buka 'ViewController'. Di sini kami akan meletakkan kode berikut untuk menginisialisasi Komponen Komposit untuk Panggilan. Ganti <GROUP_CALL_ID> dengan ID grup panggilan Anda atau UUID() untuk menghasilkannya. Juga ganti <DISPLAY_NAME> dengan nama Anda, dan <USER_ACCESS_TOKEN> dengan token Anda. Batas untuk panjang <DISPLAY_NAME> string adalah 256.
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)
}
}
Menjalankan kode
Anda dapat membuat dan menjalankan aplikasi di simulator iOS dengan memilihEksekusiProduk> atau dengan menggunakan pintasan keyboard (⌘-R).
- Ketuk
Start Experience. - Terima izin akses audio dan pilih pengaturan perangkat, mikrofon, dan video.
- Ketuk
Start Call.

Model Objek
Kelas dan antarmuka berikut menangani beberapa fitur utama pustaka klien Antarmuka Pengguna Azure Communication Services:
| Nama | Deskripsi |
|---|---|
| CallComposite | Komposit merender pengalaman panggilan dengan kontrol dan galeri peserta. |
| CallCompositeOptions | Menyertakan opsi seperti opsi tema dan penanganan aktivitas. |
| RemoteOptions | Opsi jarak jauh mengirim ke AzureCommunicationService untuk bergabung dalam panggilan grup atau rapat Tim. |
| ThemeOptions | Memungkinkan Anda untuk mengustomisasi tema. |
| LocalizationOptions | Memungkinkan Anda mengatur bahasa untuk komposit. |
Fungsionalitas Pustaka Antarmuka Pengguna
Membuat komposit panggilan
Menginisialisasi instans CallCompositeOptions dan instans CallComposite di dalam fungsi startCallComposite.
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions()
callComposite = CallComposite(withOptions: callCompositeOptions)
}
Autentikasi penyetelan
Menginisialisasi instans CommunicationTokenCredential di dalam fungsi startCallComposite. Ganti <USER_ACCESS_TOKEN> dengan token Anda.
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
Lihat dokumentasi token akses pengguna jika Anda belum memiliki token yang tersedia.
Menyiapkan opsi panggilan grup atau rapat Teams
Bergantung pada tipe Panggilan/Rapat apa yang ingin Anda siapkan, gunakan objek opsi yang sesuai.
Panggilan grup
Menginisialisasi RemoteOptions instans untuk .groupCall pencari lokasi di startCallComposite dalam fungsi. Ganti <GROUP_CALL_ID> dengan ID grup untuk panggilan Anda dan <DISPLAY_NAME> dengan nama Anda.
Pelajari selengkapnya tentang panggilan grup di sini.
// 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>")
Rapat Teams
Menginisialisasi RemoteOptions instans untuk .teamsMeeting pencari lokasi di startCallComposite dalam fungsi. Ganti <TEAMS_MEETING_LINK> dengan tautan rapat Teams untuk panggilan Anda dan <DISPLAY_NAME> dengan nama Anda.
let remoteOptions = RemoteOptions(for: .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
Mendapatkan tautan rapat Microsoft Teams
Tautan rapat Microsoft Teams dapat diambil menggunakan API Graph. Proses ini dirinci dalam dokumentasi Graph.
SDK Panggilan Communication Services menerima tautan rapat Microsoft Teams lengkap. Tautan ini dikembalikan sebagai bagian dari sumber daya onlineMeeting, dapat diakses di properti joinWebUrl Anda juga bisa mendapatkan informasi rapat yang diperlukan dari URL Gabung Rapat di undangan rapat Teams itu sendiri.
Luncurkan
Memanggil launch pada instans CallComposite di dalam fungsi startCallComposite
callComposite?.launch(remoteOptions: remoteOptions)
Berlangganan kejadian
Anda dapat menerapkan penutupan untuk bertindak atas peristiwa tersebut. Kejadian ketika komposit berakhir dengan kesalahan adalah contohnya.
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
Terapkan opsi tema
Anda dapat menyesuaikan tema dengan membuat opsi tema kustom yang mengimplementasikan protokol ThemeOptions. Anda kemudian menyertakan instans kelas baru itu di CallCompositeOptions Anda.
class CustomThemeOptions: ThemeOptions {
var primaryColor: UIColor {
return UIColor.red
}
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())
Untuk informasi selengkapnya tentang cara kerja tema, lihat Panduan tema.
Menerapkan opsi pelokalan
Anda dapat mengubah bahasa dengan membuat opsi pelokalan kustom dan menyertakannya ke .CallCompositeOptions Secara default, semua label teks menggunakan string bahasa Inggris (SupportedLocale.en). Jika diinginkan, LocalizationOptions dapat digunakan untuk mengatur yang berbeda locale. Di luar kotak, pustaka UI menyertakan satu set locale yang dapat digunakan dengan komponen UI. SupportedLocale.values menyediakan daftar semua bahasa yang didukung.
Untuk contoh di bawah ini, komposit akan dilokalkan ke Bahasa Prancis (fr).
// Option1: Use intellisense to get supported locales by the UI Library
let localizationOptions = LocalizationOptions(locale: SupportedLocale.frFR)
// Option2: Swift Locale struct, if locale not supported by UI Library, will default to English
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr-FR"))
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
Untuk informasi selengkapnya tentang pelokalan dan daftar bahasa yang didukung, lihat Panduan pelokalan.
Menambahkan pemberitahuan ke aplikasi seluler Anda
Pemberitahuan push memungkinkan Anda mengirim informasi dari aplikasi ke perangkat seluler pengguna. Anda dapat menggunakan pemberitahuan push untuk menampilkan dialog, memutar suara, atau menampilkan antarmuka pengguna panggilan masuk. Azure Communication Services menyediakan integrasi dengan Azure Event Grid dan Azure Notification Hubs yang memungkinkan Anda menambahkan pemberitahuan push ke aplikasi Anda mengikuti tautan.
Membersihkan sumber daya
Jika ingin membersihkan dan menghapus langganan Azure Communication Services, Anda bisa menghapus sumber daya atau grup sumber daya.
Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Pelajari lebih lanjut cara membersihkan sumber daya.