Bagikan melalui


Praktik terbaik: SDK panggilan Azure Communication Services

Artikel ini menyediakan informasi tentang praktik terbaik yang terkait dengan SDK panggilan Azure Communication Services.

Praktik terbaik untuk Azure Communication Services Calling Web SDK

Bagian ini menyediakan informasi tentang praktik terbaik yang terkait dengan Azure Communication Services Calling Web (JavaScript) SDK untuk panggilan suara dan video.

Colokkan mikrofon atau aktifkan mikrofon dari manajer perangkat saat panggilan sedang berlangsung

Ketika tidak ada mikrofon yang tersedia di awal panggilan Azure Communication Services, lalu mikrofon tersedia, perubahan akan meningkatkan noMicrophoneDevicesEnumerated peristiwa diagnostik. Ketika peristiwa itu terjadi, aplikasi Anda perlu memanggil askDevicePermission untuk mendapatkan persetujuan pengguna untuk menghitung perangkat. Pengguna kemudian dapat mematikan suara atau menyalakan suara mikrofon.

Buang VideoStreamRendererView

Aplikasi Communication Services harus membuang VideoStreamRendererView, atau instans induknya VideoStreamRenderer , ketika tidak lagi diperlukan.

Menutup panggilan pada peristiwa onbeforeunload

Aplikasi Anda harus memanggil call.hangup ketika acara onbeforeunload dipancarkan.

Menangani beberapa panggilan pada beberapa tab

Aplikasi Anda tidak boleh terhubung ke panggilan dari beberapa tab browser secara bersamaan di perangkat seluler. Situasi ini dapat menyebabkan perilaku yang tidak ditentukan karena alokasi sumber daya untuk mikrofon dan kamera pada perangkat. Kami mendorong pengembang untuk selalu menutup panggilan ketika mereka selesai di latar belakang sebelum memulai panggilan baru.

Menangani OS yang mematikan suara panggilan saat panggilan telepon masuk

Selama panggilan Azure Communication Services (untuk iOS dan Android), jika panggilan telepon masuk atau asisten suara diaktifkan, OS secara otomatis mematikan mikrofon dan kamera pengguna. Di Android, panggilan secara otomatis dinyalakan dan video dimulai ulang setelah panggilan telepon berakhir. Di iOS, menyalakan suara dan memulai ulang video memerlukan tindakan pengguna.

Anda dapat menggunakan peristiwa microphoneMuteUnexpectedly kualitas untuk mendengarkan pemberitahuan bahwa mikrofon dibisukan secara tak terduga. Perlu diingat bahwa untuk bergabung kembali dengan panggilan dengan benar, Anda perlu menggunakan SDK 1.2.3-beta.1 atau yang lebih baru.

const latestMediaDiagnostic = call.api(SDK.Features.Diagnostics).media.getLatest();
const isIosSafari = (getOS() === OSName.ios) && (getPlatformName() === BrowserName.safari);
if (isIosSafari && latestMediaDiagnostic.microphoneMuteUnexpectedly && latestMediaDiagnostic.microphoneMuteUnexpectedly.value) {
  // received a QualityEvent on iOS that the microphone was unexpectedly muted - notify user to unmute their microphone and to start their video stream
}

Aplikasi Anda harus memanggil call.startVideo(localVideoStream); ​​untuk memulai stream video dan harus menggunakan this.currentCall.unmute(); untuk membatalkan pembisuan audio.

Kelola perangkat

Anda dapat menggunakan SDK Azure Communication Services untuk mengelola perangkat dan operasi media Anda.

Aplikasi Anda tidak boleh menggunakan API browser asli seperti getUserMedia atau getDisplayMedia untuk memperoleh aliran di luar SDK. Jika demikian, Anda harus membuang aliran media secara manual sebelum menggunakan DeviceManager atau API manajemen perangkat lainnya melalui SDK Communication Services.

Meminta izin perangkat

Anda dapat meminta izin perangkat dengan menggunakan SDK. Aplikasi Anda harus menggunakan DeviceManager.askDevicePermission untuk meminta akses ke perangkat audio dan/atau video.

Jika pengguna menolak akses, DeviceManager.askDevicePermission mengembalikan false untuk jenis perangkat tertentu (audio atau video) pada panggilan berikutnya, bahkan setelah halaman di-refresh. Dalam skenario ini, aplikasi Anda harus:

  1. Deteksi bahwa pengguna sebelumnya menolak akses.
  2. Instruksikan pengguna untuk mengatur ulang secara manual atau secara eksplisit memberikan akses ke jenis perangkat tertentu.

Mengelola perilaku kamera yang digunakan proses lain

  • Di Windows Chrome dan Windows Microsoft Edge: Jika Anda memulai, bergabung, atau menerima panggilan dengan video aktif, dan proses lain (selain browser tempat SDK web berjalan) menggunakan perangkat kamera, panggilan dimulai hanya dengan audio dan tanpa video. cameraStartFailed Bendera Diagnostik Yang Menghadap Pengguna dinaikkan karena kamera gagal dimulai.

    Situasi yang sama berlaku untuk mengaktifkan panggilan tengah video. Anda dapat mematikan kamera di proses lain sehingga proses tersebut merilis perangkat kamera, lalu memulai video lagi dari panggilan. Video kemudian dinyalakan untuk panggilan, dan peserta jarak jauh mulai melihat video.

    Masalah ini tidak ada di macOS Chrome atau macOS Safari karena OS memungkinkan proses dan utas berbagi perangkat kamera.

  • Pada perangkat seluler: Jika ProcessA meminta perangkat kamera saat ProcessB menggunakannya, Maka ProcessA akan menyalip perangkat kamera dan ProcessB berhenti menggunakannya.

  • Di iOS Safari: Anda tidak dapat mengaktifkan kamera untuk beberapa klien panggilan pada tab yang sama atau di seluruh tab. Ketika setiap klien panggilan menggunakan kamera, itu menyalip kamera dari klien panggilan sebelumnya yang menggunakannya. Klien panggilan sebelumnya mendapatkan cameraStoppedUnexpectedly bendera Diagnostik Yang Menghadap Pengguna.

Mengelola berbagi layar

Menutup aplikasi tidak menghentikannya dibagikan

Katakanlah bahwa dari Chromium, Anda berbagi layar aplikasi Microsoft Teams. Anda kemudian memilih tombol X pada aplikasi Teams untuk menutupnya. Meskipun jendela ditutup, aplikasi Teams terus berjalan di latar belakang. Ikon masih muncul di bilah tugas desktop. Karena aplikasi Teams masih berjalan, aplikasi masih dibagikan layar dengan peserta jarak jauh.

Untuk menghentikan aplikasi dibagikan layar, Anda harus mengambil salah satu tindakan berikut:

  • Klik kanan ikon aplikasi pada taskbar desktop, lalu pilih Keluar.
  • Pilih tombol Hentikan berbagi di browser.
  • Panggil operasi API SDK Call.stopScreenSharing() .

Safari hanya dapat melakukan berbagi layar penuh

Safari hanya mengizinkan berbagi layar untuk seluruh layar. Perilaku tersebut tidak seperti Chromium, yang memungkinkan Anda berbagi layar penuh, aplikasi desktop tertentu, atau tab browser tertentu.

Anda dapat memberikan izin berbagi layar di macOS

Untuk berbagi layar di macOS Safari atau macOS Chrome, berikan izin yang diperlukan ke browser pada menu OS: Keamanan Preferensi>Sistem & Perekaman Layar Privasi.>

Praktik terbaik untuk Azure Communication Services Calling Native SDK

Bagian ini menyediakan informasi tentang praktik terbaik yang terkait dengan Azure Communication Services Calling Native SDK untuk panggilan suara dan video.

Platform yang didukung

Berikut adalah persyaratan platform OS minimum untuk memastikan fungsionalitas optimal SDK Asli Panggilan.

  • Dukungan untuk iOS 10.0+ pada waktu build dan iOS 12.0+ saat runtime
  • XCode 12.0+
  • Dukungan untuk iPadOS 13.0+

Memverifikasi izin perangkat untuk permintaan aplikasi

Untuk menggunakan SDK Asli Panggilan untuk melakukan atau menerima panggilan, konsumen perlu mengotorisasi setiap platform untuk mengakses sumber daya perangkat. Sebagai pengembang, Anda harus meminta akses kepada pengguna dan memastikan bahwa izin diaktifkan. Konsumen mengotorisasi hak akses ini, jadi verifikasi bahwa mereka saat ini memiliki izin yang diperlukan.

  • NSMicrophoneUsageDescription untuk akses mikrofon
  • NSCameraUsageDescription untuk akses kamera

Mengonfigurasi log

Menerapkan pengelogan seperti yang dijelaskan dalam tutorial tentang mengambil file log lebih penting dari sebelumnya. Log terperinci membantu mendiagnosis masalah khusus untuk model perangkat atau versi OS yang memenuhi kriteria SDK minimum. Kami mendorong pengembang untuk mengonfigurasi log dengan menggunakan API Log. Tanpa log, tim dukungan Microsoft tidak dapat membantu men-debug dan memecahkan masalah panggilan.

Lacak CallID

CallID adalah ID unik untuk panggilan. Ini mengidentifikasi peristiwa yang berkorelasi dari semua peserta dan titik akhir yang terhubung selama satu panggilan. Dalam kebanyakan kasus, Anda menggunakannya untuk meninjau log. Tim Dukungan Microsoft memintanya untuk membantu memecahkan masalah panggilan.

Anda harus melacak CallID nilai dalam telemetri yang Dikonfigurasi di aplikasi Anda. Untuk memahami cara mengambil nilai untuk setiap platform, ikuti panduan dalam panduan pemecahan masalah.

Berlangganan Diagnostik Yang Menghadap Pengguna dan statistik kualitas media

Anda dapat menggunakan fitur Azure Communication Services ini untuk membantu meningkatkan pengalaman pengguna:

  • Diagnostik Yang Menghadap Pengguna: Periksa properti panggilan untuk menentukan penyebab masalah yang memengaruhi pelanggan Anda.
  • Statistik kualitas media: Memeriksa metrik kualitas audio, video, dan berbagi layar tingkat rendah untuk metrik panggilan masuk dan keluar. Kami menyarankan agar Anda mengumpulkan data dan mengirimkannya ke penyerapan alur Anda setelah panggilan berakhir.

Mengelola penanganan kesalahan

Jika ada kesalahan selama panggilan atau implementasi, metode mengembalikan objek kesalahan yang berisi kode kesalahan. Sangat penting untuk menggunakan objek kesalahan ini untuk penanganan kesalahan yang tepat dan menampilkan pemberitahuan. Status panggilan juga mengembalikan kode kesalahan untuk membantu mengidentifikasi alasan di balik kegagalan panggilan. Anda dapat merujuk ke panduan pemecahan masalah untuk mengatasi masalah apa pun.

Mengelola aliran video

Pastikan untuk membuang VideoStreamRendererView kapan UI tidak lagi menampilkan video. Gunakan VideoStreamType untuk menentukan jenis aliran.

Melakukan manajemen memori umum

Pra-alokasi sumber daya. Inisialisasi klien panggilan Anda dan sumber daya yang diperlukan selama fase startup aplikasi Anda, bukan sesuai permintaan. Pendekatan ini mengurangi latensi dalam memulai panggilan.

Buang dengan benar. Buang semua objek panggilan setelah digunakan, untuk membebaskan sumber daya sistem dan menghindari kebocoran memori. Pastikan untuk berhenti berlangganan dari peristiwa yang dapat menyebabkan kebocoran memori.

Pertimbangkan bagaimana proses mengakses kamera atau mikrofon

Pada perangkat seluler, jika beberapa proses mencoba mengakses kamera atau mikrofon secara bersamaan, proses pertama untuk meminta akses mengontrol perangkat. Akibatnya, proses kedua segera kehilangan akses ke dalamnya.

Optimalkan ukuran pustaka

Mengoptimalkan ukuran pustaka dalam pengembangan perangkat lunak sangat penting karena alasan berikut, terutama karena aplikasi menjadi lebih kompleks dan intensif sumber daya:

  • Performa aplikasi: Pustaka yang lebih kecil mengurangi jumlah kode yang harus dimuat, diurai, dan dijalankan aplikasi. Pengurangan ini dapat secara signifikan meningkatkan waktu startup dan performa keseluruhan aplikasi Anda, terutama pada perangkat yang memiliki sumber daya terbatas.

  • Penggunaan memori: Dengan meminimalkan ukuran pustaka, Anda dapat mengurangi jejak memori runtime aplikasi. Penurunan ini penting untuk perangkat seluler, di mana memori sering dibatasi. Penggunaan memori yang lebih rendah dapat menyebabkan lebih sedikit crash sistem dan performa multitugas yang lebih baik.

Untuk informasi selengkapnya, lihat: