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 JavaScript SDK web Azure Communication Services

Bagian ini menyediakan informasi mengenai praktik terbaik terkait dengan SDK panggilan suara dan video JavaScript Azure Communication Services.

SDK panggilan suara dan video JavaScript

Mikrofon plug-in atau aktifkan mikrofon dari manajer perangkat saat panggilan Azure Communication Services sedang berlangsung

Ketika tidak ada mikrofon yang tersedia di awal panggilan, dan kemudian mikrofon tersedia, peristiwa diagnostik panggilan "noMicrophoneDevicesEnumerated" dinaikkan. Ketika itu terjadi, aplikasi Anda harus memanggil askDevicePermission untuk mendapatkan persetujuan pengguna untuk menghitung perangkat. Kemudian pengguna akan dapat membisukan/membunyikan mikrofon.

Membuang tampilan {i>renderer stream

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

Menutup panggilan pada acara onbeforeunload

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

Menangani beberapa panggilan di beberapa Tab di ponsel

Aplikasi Anda tidak boleh terhubung ke panggilan dari beberapa tab browser secara bersamaan karena ini dapat menyebabkan perilaku yang tidak terdefinisi karena alokasi sumber daya untuk mikrofon dan kamera pada perangkat. Pengembang didorong untuk selalu menutup panggilan saat selesai di latar belakang sebelum memulai panggilan yang baru.

Menangani panggilan yang membisukan OS saat panggilan telepon masuk.

Saat berada di panggilan Azure Communication Services (untuk iOS dan Android) jika panggilan telepon masuk atau Asisten suara diaktifkan, OS akan secara otomatis membisukan mikrofon dan kamera pengguna. Di Android, panggilan secara otomatis dinyalakan dan video dimulai ulang setelah panggilan telepon berakhir. Di iOS, diperlukan tindakan pengguna untuk "menyalakan suara" dan "memulai video" lagi. Anda dapat mendengarkan pemberitahuan bahwa mikrofon dibisukan secara tidak terduga dengan kualitas peristiwa microphoneMuteUnexpectedly. Perhatikan agar dapat bergabung kembali dengan panggilan dengan benar, Anda perlu menggunakan SDK 1.2.3-beta.1 atau yang lebih tinggi.

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.

Manajemen 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 anda secara manual sebelum menggunakan DeviceManager atau API manajemen perangkat lainnya melalui SDK Communication Services.

Meminta izin perangkat

Anda dapat meminta izin perangkat menggunakan SDK:

  • Aplikasi Anda harus menggunakan DeviceManager.askDevicePermission untuk meminta akses ke perangkat audio dan/atau video.
  • Jika pengguna menolak akses, DeviceManager.askDevicePermission akan mengembalikan 'false' untuk jenis perangkat tertentu (audio atau video) pada panggilan berikutnya, bahkan setelah halaman di-refresh. Dalam skenario ini, aplikasi Anda harus mendeteksi bahwa pengguna sebelumnya menolak akses dan menginstruksikan pengguna untuk mengatur ulang atau secara eksplisit memberikan akses ke jenis perangkat tertentu.

Kamera digunakan oleh proses lain

  • Di Windows Chrome dan Windows Microsoft Edge, jika Anda memulai/bergabung/menerima panggilan dengan video aktif dan perangkat kamera sedang digunakan oleh proses lain selain browser tempat SDK web berjalan, maka panggilan dimulai dengan audio saja dan tanpa video. CameraStartFailed UFD dinaikkan karena kamera gagal dimulai sejak digunakan oleh proses lain. Hal yang sama berlaku untuk mengaktifkan video di tengah panggilan. Anda dapat mematikan kamera di proses lain sehingga proses tersebut merilis perangkat kamera, lalu memulai video lagi dari panggilan dan video sekarang akan menyala untuk panggilan dan peserta jarak jauh mulai melihat video Anda.
  • Ini bukan masalah di macOS Chrome atau macOS Safari karena OS akan membiarkan proses/utas berbagi perangkat kamera.
  • Pada perangkat seluler, jika ProcessA meminta perangkat kamera dan sedang digunakan oleh ProsesB, Maka ProcessA menyalip perangkat kamera dan ProcessB berhenti menggunakan perangkat kamera
  • Di safari iOS, Anda tidak dapat mengaktifkan kamera untuk beberapa klien panggilan dalam 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 kameraStoppedUnexpectedly UFD.

Berbagi layar

Menutup aplikasi tidak menghentikannya dibagikan

Misalnya, katakanlah bahwa dari Chromium, Anda berbagi layar aplikasi Microsoft Teams. Anda kemudian memilih tombol "X" pada aplikasi Teams untuk menutupnya. Aplikasi Teams tidak akan ditutup dan masih akan berjalan di latar belakang. Anda bahkan masih akan melihat ikon di kanan bawah bilah desktop Anda. Karena aplikasi Teams masih berjalan, itu berarti bahwa aplikasi masih dibagikan layar dan peserta jarak jauh dalam panggilan masih dapat melihat aplikasi Teams Anda dibagikan layar. Untuk menghentikan aplikasi dibagikan layar, Anda harus mengklik kanan ikonnya pada bilah desktop lalu klik keluar. Atau Anda harus mengklik tombol "Hentikan berbagi" di browser. Atau panggil API Call.stopScreenSharing() SDK.

Safari hanya dapat melakukan berbagi layar penuh

Safari hanya memungkinkan untuk berbagi layar di seluruh layar. Tidak seperti Chromium, yang memungkinkan Anda berbagi layar layar penuh, aplikasi desktop tertentu, atau tab browser tertentu.

Izin berbagi layar di macOS

Untuk melakukan berbagi layar di macOS Safari atau macOS Chrome, izin perekaman layar harus diberikan ke browser di menu OS: "Preferensi Sistem" -> "Keamanan & Privasi" -> "Perekaman Layar."

Praktik terbaik SDK asli Azure Communication Services

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

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+ pada waktu proses.
  • Xcode 12.0+.
  • Dukungan untuk iPadOS 13.0+.

Izin perangkat permintaan aplikasi

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

  • NSMicrophoneUsageDescription untuk akses mikrofon.
  • NSCameraUsageDescription untuk akses kamera.

Mengonfigurasi log

Menerapkan pengelogan sesuai tutorial pengambilan file log lebih penting dari sebelumnya. Log terperinci membantu dalam mendiagnosis masalah khusus untuk model perangkat atau versi OS yang memenuhi kriteria SDK minimum. Kami mendorong pengembang yang mulai mengonfigurasi API Log tanpa log, tim Dukungan Microsoft tidak akan dapat membantu men-debug dan memecahkan masalah panggilan.

Melacak ID Panggilan

CallID adalah ID unik untuk panggilan. Ini mengidentifikasi peristiwa berkorelasi dari semua peserta dan titik akhir yang terhubung selama satu panggilan, dalam Kebanyakan kasus Anda menggunakannya untuk meninjau log dan tim Dukungan Microsoft memintanya untuk membantu memecahkan masalah panggilan. Anda harus melacak CallID di telemetri yang dikonfigurasi di aplikasi, Anda dapat mengikuti panduan dalam panduan pemecahan masalah untuk memahami cara mengambilnya untuk setiap platform.

Berlangganan UFD (User Facing Diagnostics) dan statistik kualitas media

  • User Facing Diagnostics (UFD) yang dapat digunakan untuk memeriksa berbagai properti panggilan untuk menentukan masalah apa yang mungkin terjadi selama panggilan 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 Anda berakhir.

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 video tidak lagi ditampilkan di UI. Gunakan VideoStreamType untuk menentukan jenis aliran.

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 saat memulai panggilan.

Buang dengan Benar. Pastikan bahwa semua objek panggilan dibuang dengan benar setelah digunakan untuk membebaskan sumber daya sistem dan menghindari kebocoran memori. Pastikan untuk berhenti berlangganan dari peristiwa yang mencegah kebocoran memori.

Kamera atau mikrofon yang digunakan oleh proses lain

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

Mengoptimalkan ukuran APP menggunakan Pustaka UI

Mengoptimalkan ukuran pustaka dalam pengembangan perangkat lunak sangat penting karena beberapa alasan, terutama karena aplikasi menjadi semakin kompleks, dan intensif sumber daya.

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

Penggunaan Memori: Dengan meminimalkan ukuran pustaka, Anda dapat mengurangi jejak memori runtime aplikasi. 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.

Langkah berikutnya

Untuk informasi lebih lanjut, baca artikel berikut: