Delen via


Best practices: Azure Communication Services-aanroepen van SDK's

Dit artikel bevat informatie over best practices met betrekking tot de Aanroepende SDK's van Azure Communication Services.

Best practices voor De JavaScript SDK voor Azure Communication Services-web

Deze sectie bevat informatie over best practices die zijn gekoppeld aan de JavaScript JavaScript-SDK voor spraak- en videogesprekken van Azure Communication Services.

Sdk voor spraak- en videogesprekken in JavaScript

Invoegtoepassingsmicrofoon of microfoon inschakelen vanuit apparaatbeheer wanneer Azure Communication Services wordt aangeroepen

Wanneer er geen microfoon beschikbaar is aan het begin van een gesprek en er vervolgens een microfoon beschikbaar is, wordt de diagnostische gebeurtenis 'noMicrophoneDevicesEnumerated' gegenereerd. Wanneer dit gebeurt, moet uw toepassing aanroepen askDevicePermission om toestemming van de gebruiker te krijgen om apparaten op te sommen. Vervolgens kan de gebruiker de microfoon dempen/dempen opheffen.

Weergave videostreamweergave verwijderen

Communication Services-toepassingen moeten het bovenliggende VideoStreamRenderer exemplaar verwijderen VideoStreamRendererViewwanneer deze niet meer nodig is.

Het gesprek ophangen bij onbeforeunload-gebeurtenis

Uw toepassing moet worden aangeroepen call.hangup wanneer de onbeforeunload gebeurtenis wordt verzonden.

Meerdere aanroepen verwerken op meerdere tabbladen op mobiele apparaten

Uw toepassing mag niet tegelijkertijd verbinding maken met aanroepen vanaf meerdere browsertabbladen, omdat dit niet-gedefinieerd gedrag kan veroorzaken vanwege resourcetoewijzing voor microfoon en camera op het apparaat. Ontwikkelaars worden aangemoedigd om oproepen altijd op te hangen wanneer ze op de achtergrond zijn voltooid voordat ze een nieuwe starten.

Het dempen van het besturingssysteem verwerken wanneer een telefoongesprek binnenkomt.

Tijdens een Azure Communication Services-oproep (voor zowel iOS als Android) als een telefoongesprek binnenkomt of spraakassistent wordt geactiveerd, wordt de microfoon en camera van de gebruiker automatisch gedempt door het besturingssysteem. Op Android wordt het dempen automatisch opheffen en video opnieuw opgestart nadat het telefoongesprek is beëindigd. Voor iOS is gebruikersactie vereist om het dempen op te heffen en video opnieuw te starten. U kunt luisteren naar de melding dat de microfoon onverwacht is gedempt met de kwaliteitsgebeurtenis van microphoneMuteUnexpectedly. Let op als u opnieuw wilt kunnen deelnemen aan een aanroep, moet u SDK 1.2.3-beta.1 of hoger gebruiken.

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
}

Uw toepassing moet worden aangeroepen call.startVideo(localVideoStream); om een videostream te starten en moet worden gebruikt this.currentCall.unmute(); om het dempen van de audio op te heffen.

Apparaatbeheer

U kunt de Azure Communication Services SDK gebruiken om uw apparaten en mediabewerkingen te beheren.

  • Uw toepassing mag geen systeemeigen browser-API's gebruiken, zoals getUserMedia of getDisplayMedia om streams buiten de SDK te verkrijgen. Als u dit doet, moet u uw mediastreams handmatig verwijderen voordat u api's voor apparaatbeheer gebruikt DeviceManager via de Communication Services SDK.

Apparaatmachtigingen aanvragen

U kunt apparaatmachtigingen aanvragen met behulp van de SDK:

  • Uw toepassing moet gebruiken DeviceManager.askDevicePermission om toegang tot audio- en/of videoapparaten aan te vragen.
  • Als de gebruiker de toegang weigert, DeviceManager.askDevicePermission wordt 'false' geretourneerd voor een bepaald apparaattype (audio of video) bij volgende oproepen, zelfs nadat de pagina is vernieuwd. In dit scenario moet uw toepassing detecteren dat de gebruiker eerder de toegang heeft geweigerd en de gebruiker opdracht geeft om handmatig opnieuw in te stellen of expliciet toegang te verlenen tot een bepaald apparaattype.

Camera wordt gebruikt door een ander proces

  • Als u in Windows Chrome en Windows Microsoft Edge een gesprek start of accepteert met video aan en het cameraapparaat wordt gebruikt door een ander proces dan de browser waarop de web-SDK wordt uitgevoerd, wordt het gesprek alleen gestart met audio en geen video. Een cameraStartFailed UFD wordt gegenereerd omdat de camera niet kon worden gestart omdat deze door een ander proces werd gebruikt. Hetzelfde geldt voor het inschakelen van video tijdens een gesprek. U kunt de camera in het andere proces uitschakelen, zodat het cameraapparaat wordt vrijgegeven en vervolgens video opnieuw start vanuit het gesprek en video wordt nu ingeschakeld voor de oproep en externe deelnemers beginnen met het zien van uw video.
  • Dit is geen probleem in macOS Chrome of macOS Safari, omdat het besturingssysteem processen/threads het cameraapparaat laat delen.
  • Als een ProcessA op mobiele apparaten het cameraapparaat aanvraagt en door ProcessB wordt gebruikt, neemt ProcessA het cameraapparaat over en stopt ProcessB met het gebruik van het cameraapparaat
  • Op iOS Safari kunt u de camera niet inschakelen voor meerdere gespreksclients op hetzelfde tabblad of op verschillende tabbladen. Wanneer een gespreksclient de camera gebruikt, wordt de camera overgenomen van een eerdere gespreksclient die deze gebruikte. Vorige oproepclient krijgt een cameraStoppedUnexpectedly UFD.

Scherm delen

Als u de toepassing afsluit, wordt deze niet meer gedeeld

Stel dat u op het scherm van Chromium de Microsoft Teams-toepassing deelt. Vervolgens selecteert u de knop X in de Teams-toepassing om deze te sluiten. De Teams-toepassing wordt niet gesloten en wordt nog steeds op de achtergrond uitgevoerd. U ziet zelfs nog steeds het pictogram in de rechterbenedenhoek van de bureaubladbalk. Omdat de Teams-toepassing nog steeds wordt uitgevoerd, betekent dit dat het nog steeds wordt gedeeld met het scherm en dat de externe deelnemer in de oproep nog steeds kan zien dat uw Teams-toepassing wordt gedeeld. Als u wilt voorkomen dat de toepassing wordt gedeeld op het scherm, klikt u met de rechtermuisknop op het pictogram op de bureaubladbalk en klikt u vervolgens op afsluiten. U kunt ook klikken op de knop Delen stoppen in de browser. Of roep de CALL.stopScreenSharing() API van de SDK aan.

Safari kan alleen volledig scherm delen

In Safari kan alleen het hele scherm worden gedeeld. In tegenstelling tot Chromium, waarmee u schermvullend scherm, specifieke bureaublad-app of een specifiek browsertabblad kunt delen.

Machtigingen voor het delen van schermen in macOS

Als u schermdeling wilt uitvoeren in macOS Safari of macOS Chrome, moeten machtigingen voor schermopname worden verleend aan de browsers in het menu van het besturingssysteem: 'Systeemvoorkeuren' -> 'Beveiliging en privacy' -> 'Schermopname'.

Best practices voor systeemeigen Sdk voor Azure Communication Services

Deze sectie bevat informatie over aanbevolen procedures die zijn gekoppeld aan de systeemeigen SDK voor spraak- en videogesprekken van Azure Communication Services.

Ondersteunde platforms

Hier volgen de minimale vereisten voor het besturingssysteemplatform om optimale functionaliteit van de systeemeigen SDK's voor aanroepen te garanderen.

  • Ondersteuning voor iOS 10.0+ tijdens de build en iOS 12.0+ tijdens runtime.
  • Xcode 12.0+.
  • Ondersteuning voor iPadOS 13.0+.

Apparaatmachtigingen voor app-aanvragen

Als u de systeemeigen BEL-SDK's wilt gebruiken voor het plaatsen of ontvangen van oproepen, moet u elk platform machtigen voor toegang tot apparaatbronnen. Als ontwikkelaar moet u de gebruiker om toegang vragen en ervoor zorgen dat deze is ingeschakeld. De consument autoriseert deze toegangsrechten, dus controleer of ze eerder zijn verleend.

  • NSMicrophoneUsageDescription voor toegang tot de microfoon.
  • NSCameraUsageDescription voor cameratoegang.

De logboeken configureren

Het implementeren van logboekregistratie volgens de zelfstudie voor het ophalen van logboekbestanden is belangrijker dan ooit. Gedetailleerde logboeken helpen bij het diagnosticeren van problemen die specifiek zijn voor apparaatmodellen of besturingssysteemversies die voldoen aan de minimale SDK-criteria. We raden de ontwikkelaars aan die beginnen met het configureren van de Logboeken-API zonder de logboeken die het Microsoft Ondersteuning team niet kunnen helpen bij het opsporen van fouten en het oplossen van problemen met de aanroepen.

Oproep-id bijhouden

CallID is de unieke id voor een oproep. Het identificeert gecorreleerde gebeurtenissen van alle deelnemers en eindpunten die verbinding maken tijdens één gesprek. In de meeste gevallen gebruikt u deze om de logboeken te bekijken en Microsoft Ondersteuning team erom te vragen om problemen met de oproepen op te lossen. U moet de CallID telemetrie bijhouden die u in uw app configureert. U kunt de richtlijnen in de gids voor probleemoplossing volgen om te begrijpen hoe u deze voor elk platform ophaalt.

Abonneren op UFD (Diagnostische gegevens van gebruikers) en statistieken over mediakwaliteit

  • User Facing Diagnostics (UFD) die kan worden gebruikt om verschillende eigenschappen van een oproep te onderzoeken om te bepalen wat het probleem kan zijn tijdens de oproep die van invloed is op uw klanten.
  • Statistieken over mediakwaliteit onderzoeken de metrische gegevens over de kwaliteit van audio, video en scherm delen voor metrische gegevens over binnenkomende en uitgaande gesprekken. We raden u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd.

Foutafhandeling

Als er fouten optreden tijdens het aanroepen of implementeren, retourneren de methoden foutobjecten die foutcodes bevatten. Het is van cruciaal belang om deze foutobjecten te gebruiken voor de juiste foutafhandeling en om waarschuwingen weer te geven. De oproepstatussen retourneren ook foutcodes om de reden achter een oproepfout te identificeren. Raadpleeg de gids voor probleemoplossing om eventuele problemen op te lossen.

Videostreams beheren

Zorg ervoor dat u de VideoStreamRendererView video moet verwijderen wanneer de video niet meer wordt weergegeven in de gebruikersinterface. Gebruik VideoStreamType dit om het type stroom te bepalen.

Algemeen geheugenbeheer

Toewijzing van resources vooraf instellen. Initialiseer uw aanroepende client en eventuele benodigde resources tijdens de opstartfase van uw app in plaats van op aanvraag. Deze benadering vermindert de latentie bij het starten van een aanroep.

Goed verwijderen. Zorg ervoor dat alle aanroepobjecten correct worden verwijderd na gebruik om systeembronnen vrij te maken en geheugenlekken te voorkomen. Zorg ervoor dat u zich afmeldt voor gebeurtenissen die geheugenlekken voorkomen.

Camera of microfoon die door een ander proces wordt gebruikt

Het is belangrijk om te weten dat op mobiele apparaten als meerdere processen tegelijkertijd toegang proberen te krijgen tot de camera of microfoon, het eerste proces om toegang aan te vragen de controle over het apparaat krijgt. Hierdoor verliest het tweede proces onmiddellijk de toegang tot het proces.

De APP-grootte optimaliseren met behulp van de UI-bibliotheek

Het optimaliseren van de grootte van bibliotheken in softwareontwikkeling is om verschillende redenen van cruciaal belang, met name omdat toepassingen steeds complexer worden en resourcesintensief worden.

Toepassingsprestaties: kleinere bibliotheken verminderen de hoeveelheid code die moet worden geladen, geparseerd en uitgevoerd door een toepassing. Dit kan de opstarttijd en de algehele prestaties van uw toepassing aanzienlijk verbeteren, met name op apparaten met beperkte resources.

Geheugengebruik: Door de bibliotheekgrootte te minimaliseren, kunt u de geheugenvoetafdruk van de runtime van een toepassing verminderen. Dit is belangrijk voor mobiele apparaten, waarbij geheugen vaak wordt beperkt. Een lager geheugengebruik kan leiden tot minder systeemcrashes en betere multitaskingprestaties.

Volgende stappen

Raadpleeg voor meer informatie de volgende artikelen: