Sdílet prostřednictvím


Osvědčené postupy: Sady SDK volají služby Azure Communication Services

Tento článek obsahuje informace o osvědčených postupech souvisejících s voláním sad SDK služby Azure Communication Services.

Osvědčené postupy pro webovou sadu SDK pro volání služeb Azure Communication Services

Tato část obsahuje informace o osvědčených postupech přidružených k sadě Azure Communication Services Call Web (JavaScript) SDK pro hlasové volání a videohovory.

Připojte mikrofon nebo povolte mikrofon od správce zařízení, když probíhá hovor

Pokud není na začátku volání služby Azure Communication Services k dispozici žádný mikrofon a pak bude k dispozici mikrofon, tato změna vyvolá diagnostickou noMicrophoneDevicesEnumerated událost. Když k této události dojde, musí vaše aplikace vyvolat askDevicePermission , aby získala souhlas uživatele s výčtem zařízení. Uživatel pak může ztlumit nebo zrušit ztlumení mikrofonu.

Dispose of VideoStreamRendererView

Aplikace komunikačních služeb by měly zlikvidovat VideoStreamRendererViewinstanci nebo nadřazenou VideoStreamRenderer instanci, pokud už ji nepotřebujete.

Zavěsit volání události onbeforeunload

Aplikace by se měla vyvolat call.hangup při onbeforeunload vygenerované události.

Zpracování více volání na více kartách

Vaše aplikace by se neměla připojovat k voláním z několika karet prohlížeče současně na mobilních zařízeních. Tato situace může způsobit nedefinované chování kvůli přidělení prostředků mikrofonu a fotoaparátu na zařízení. Doporučujeme vývojářům, aby před spuštěním nového volání vždy zavěsili, až skončí na pozadí.

Zpracování ztlumení hovoru s operačním systémem, když přijde telefonní hovor

Pokud je během hovoru služby Azure Communication Services (pro iOS i Android) aktivován telefonní hovor nebo hlasový asistent, operační systém automaticky ztlumí mikrofon a kameru uživatele. V Androidu se hovor po ukončení telefonního hovoru automaticky zruší ztlumení a video restartuje. V iOSu zrušte ztlumení a restartování videa vyžaduje akci uživatele.

Událost kvality microphoneMuteUnexpectedly můžete použít k naslouchání oznámení, že mikrofon byl neočekávaně ztlumený. Nezapomeňte, že pokud se chcete správně připojit k volání, musíte použít sadu SDK 1.2.3-beta.1 nebo novější.

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
}

Aplikace by měla vyvolat call.startVideo(localVideoStream); spuštění streamu videa a měla by použít this.currentCall.unmute(); k zrušení ztlumení zvuku.

Správa zařízení

Sadu SDK služby Azure Communication Services můžete použít ke správě zařízení a operací médií.

Vaše aplikace by neměla používat nativní rozhraní API prohlížeče, jako jsou getUserMedia nebo getDisplayMedia k získání datových proudů mimo sadu SDK. Pokud to uděláte, musíte před použitím DeviceManager nebo jiným rozhraním API pro správu zařízení pomocí sady SDK komunikačních služeb ručně likvidovat datové proudy médií.

Vyžádání oprávnění zařízení

Pomocí sady SDK můžete požádat o oprávnění zařízení. Vaše aplikace by měla použít DeviceManager.askDevicePermission k vyžádání přístupu ke zvukovým zařízením nebo videoza zařízením.

Pokud uživatel odepře přístup, DeviceManager.askDevicePermission vrátí false se pro konkrétní typ zařízení (zvuk nebo video) při následných voláních, a to i po aktualizaci stránky. V tomto scénáři musí vaše aplikace:

  1. Zjistěte, že uživatel dříve odepřel přístup.
  2. Požádejte uživatele, aby ručně resetoval nebo explicitně udělil přístup k určitému typu zařízení.

Správa chování kamery, kterou používá jiný proces

  • V prohlížeči Windows Chrome a Windows Microsoft Edge: Pokud spustíte, připojíte nebo přijmete hovor s videem a jiný proces (jiný než prohlížeč, na kterém běží webová sada SDK), bude volání spuštěno jenom se zvukem a bez videa. Příznak cameraStartFailed Diagnostiky uživatele je vyvolán, protože se nepodařilo spustit kameru.

    Stejná situace platí pro zapnutí videohovoru uprostřed hovoru. Kameru můžete vypnout v druhém procesu, aby tento proces vyvolal zařízení fotoaparátu a pak znovu spustit video z hovoru. Video se pak zapne pro hovor a vzdálení účastníci začnou vidět video.

    Tento problém v macOS Chrome nebo macOS Safari neexistuje, protože operační systém umožňuje procesy a vlákna sdílet zařízení fotoaparátu.

  • Na mobilních zařízeních: Pokud processA požádá o zařízení fotoaparátu, zatímco processB ho používá, proces ProcessA přetáhne zařízení fotoaparátu a ProcessB ho přestanou používat.

  • V iOSu Safari: Nemůžete mít zapnutou kameru pro více klientů hovorů na stejné kartě nebo na kartách. Když některý klient hovoru použije kameru, přetáhne kameru z jakéhokoli předchozího klienta hovoru, který ho používal. Předchozí klient volání získá cameraStoppedUnexpectedly příznak diagnostiky, který je přístupný uživateli.

Správa sdílení obrazovky

Zavření aplikace nezastaví sdílení aplikace.

Řekněme, že z Chromium sdílíte aplikaci Microsoft Teams. Potom tlačítko X v aplikaci Teams vyberete a zavřete ho. I když je okno zavřené, aplikace Teams běží na pozadí. Ikona se stále zobrazuje na hlavním panelu plochy. Vzhledem k tomu, že aplikace Teams je stále spuštěná, stále se sdílí se vzdálenými účastníky.

Pokud chcete zabránit sdílení aplikace na obrazovce, musíte provést jednu z těchto akcí:

  • Klikněte pravým tlačítkem myši na ikonu aplikace na hlavním panelu plochy a pak vyberte Ukončit.
  • V prohlížeči vyberte tlačítko Ukončit sdílení.
  • Volání operace rozhraní API sady SDK Call.stopScreenSharing()

Safari může provádět jenom sdílení na celé obrazovce.

Safari umožňuje sdílení obrazovky jenom pro celou obrazovku. Toto chování je na rozdíl od Chromium, které umožňuje sdílet celou obrazovku, konkrétní desktopovou aplikaci nebo konkrétní kartu prohlížeče.

V systému macOS můžete udělit oprávnění ke sdílení obrazovky.

Pokud chcete sdílet obrazovku v macOS Safari nebo macOS Chrome, udělte prohlížečům potřebná oprávnění v nabídce operačního systému: Záznam obrazovky Zabezpečení předvoleb systému>a ochrana osobních údajů>.

Osvědčené postupy pro nativní sadu SDK pro službu Azure Communication Services

Tato část obsahuje informace o osvědčených postupech přidružených k nativní sadě SDK pro volání do služeb Azure Communication Services pro hlasové hovory a videohovory.

Podporované platformy

Tady jsou minimální požadavky na platformu operačního systému, které zajišťují optimální funkčnost nativní sady SDK pro volání.

  • Podpora pro iOS 10.0+ v době sestavení a iOS 12.0+ za běhu
  • Xcode 12.0+
  • Podpora pro iPadOS 13.0+

Ověření oprávnění zařízení pro žádosti o aplikace

Pokud chcete pro volání nebo příjem volání použít nativní sadu SDK, musí uživatelé autorizovat každou platformu pro přístup k prostředkům zařízení. Jako vývojář musíte uživatele vyzvat k zadání přístupu a zajistit, aby byla povolená oprávnění. Uživatel autorizuje tato přístupová práva, takže ověřte, že aktuálně mají požadovaná oprávnění.

  • NSMicrophoneUsageDescription pro přístup k mikrofonu
  • NSCameraUsageDescription pro přístup k fotoaparátu

Konfigurace protokolů

Implementace protokolování, jak je popsáno v kurzu o načítání souborů protokolu, je důležitější než kdy dřív. Podrobné protokoly pomáhají při diagnostice problémů specifických pro modely zařízení nebo verze operačního systému, které splňují minimální kritéria sady SDK. Doporučujeme vývojářům nakonfigurovat protokoly pomocí rozhraní API protokolů. Bez protokolů nemůže tým podpory Microsoftu pomoct s laděním a řešením potíží s voláními.

Sledování ID volání

CallID je jedinečné ID pro volání. Identifikuje korelované události ze všech účastníků a koncových bodů, které se připojují během jednoho volání. Ve většině případů ho použijete ke kontrole protokolů. Tým podpora Microsoftu požádá o pomoc s řešením potíží s voláními.

Měli byste sledovat CallID hodnotu v telemetrii, kterou v aplikaci nakonfigurujete. Pokud chcete zjistit, jak načíst hodnotu pro každou platformu, postupujte podle pokynů v průvodci odstraňováním potíží.

Přihlášení k odběru statistiky diagnostiky s informacemi o kvalitě médií a diagnostiky uživatelů

Pomocí těchto funkcí Azure Communication Services můžete zlepšit uživatelské prostředí:

  • Diagnostika zobrazená uživateli: Prozkoumejte vlastnosti volání a určete příčinu problémů, které ovlivňují vaše zákazníky.
  • Statistika kvality médií: Zkontrolujte metriky kvality zvuku, videa a sdílení obrazovky na nízké úrovni pro metriky příchozích a odchozích hovorů. Doporučujeme shromažďovat data a odesílat je do příjmu dat po ukončení volání.

Správa zpracování chyb

Pokud během volání nebo implementace dojde k nějakým chybám, vrátí metody chybové objekty, které obsahují kódy chyb. Pro správné zpracování chyb a zobrazení výstrah je důležité tyto objekty chyb použít. Stavy volání také vrací kódy chyb, které pomáhají identifikovat důvody selhání volání. Informace o řešení jakýchkoli problémů najdete v průvodci odstraňováním potíží.

Správa streamů videa

Nezapomeňte odstranit, VideoStreamRendererView když se v uživatelském rozhraní už video nezobrazuje. Slouží VideoStreamType k určení typu datového proudu.

Provádění obecné správy paměti

Předběžné přidělení prostředků Inicializace volajícího klienta a všech potřebných prostředků během fáze spuštění aplikace místo na vyžádání Tento přístup snižuje latenci při spuštění volání.

Správně vyhoďte. Odstraňte všechny objekty volání po použití, uvolněte systémové prostředky a vyhněte se nevracení paměti. Nezapomeňte se odhlásit z událostí , které by mohly způsobit nevracení paměti.

Zvažte, jak procesy přistupovat ke kameře nebo mikrofonu

Pokud se na mobilních zařízeních pokusí získat přístup ke kameře nebo mikrofonu více procesů současně, první proces, který požádá o přístup, převezme kontrolu nad zařízením. V důsledku toho druhý proces okamžitě ztratí přístup k němu.

Optimalizace velikosti knihovny

Optimalizace velikosti knihoven při vývoji softwaru je zásadní z následujících důvodů, zejména v případě, že jsou aplikace složitější a náročné na prostředky:

  • Výkon aplikace: Menší knihovny snižují množství kódu, který musí aplikace načíst, analyzovat a spouštět. Toto snížení může výrazně zvýšit dobu spuštění a celkový výkon aplikace, zejména na zařízeních s omezenými prostředky.

  • Využití paměti: Minimalizací velikosti knihovny můžete snížit nároky na paměť za běhu aplikace. Toto snížení je důležité pro mobilní zařízení, kde je paměť často omezená. Nižší využití paměti může vést k menšímu počtu chyb systému a lepšímu výkonu multitaskingu.

Další informace naleznete v tématu: