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.

Aanbevolen procedures voor de Web-SDK voor aanroepen van Azure Communication Services

Deze sectie bevat informatie over aanbevolen procedures die zijn gekoppeld aan de Azure Communication Services Calling Web -SDK (JavaScript) voor spraak- en videogesprekken.

Sluit een microfoon aan of schakel een microfoon in vanuit apparaatbeheer wanneer een gesprek wordt uitgevoerd

Wanneer er geen microfoon beschikbaar is aan het begin van een Azure Communication Services-aanroep en er vervolgens een microfoon beschikbaar is, wordt er een noMicrophoneDevicesEnumerated diagnostische gebeurtenis gegenereerd. Wanneer deze gebeurtenis plaatsvindt, moet uw toepassing aanroepen askDevicePermission om toestemming van de gebruiker te krijgen om apparaten op te sommen. De gebruiker kan de microfoon vervolgens dempen of het dempen opheffen.

VideoStreamRendererView verwijderen

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

Het gesprek ophangen bij een onbeforeunload-gebeurtenis

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

Meerdere aanroepen op meerdere tabbladen verwerken

Uw toepassing mag geen verbinding maken met oproepen vanaf meerdere browsertabbladen tegelijk op mobiele apparaten. Deze situatie kan niet-gedefinieerd gedrag veroorzaken vanwege resourcetoewijzing voor de microfoon en camera op een apparaat. Ontwikkelaars worden aangeraden altijd oproepen op te hangen wanneer ze op de achtergrond zijn voltooid voordat ze een nieuwe starten.

Het besturingssysteem dempen van een gesprek verwerken wanneer een telefoongesprek binnenkomt

Tijdens een Azure Communication Services-oproep (voor zowel iOS als Android), als er een telefoongesprek binnenkomt of de 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 het dempen en opnieuw opstarten van de video gebruikersactie vereist.

U kunt de kwaliteitsgebeurtenis microphoneMuteUnexpectedly gebruiken om te luisteren naar de melding dat de microfoon onverwacht is gedempt. Houd er rekening mee dat u SDK 1.2.3-beta.1 of hoger moet gebruiken om opnieuw aan een aanroep te kunnen deelnemen.

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.

Apparaten beheren

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 bij volgende oproepen geretourneerd false voor een bepaald apparaattype (audio of video), zelfs nadat de pagina is vernieuwd. In dit scenario moet uw toepassing het volgende doen:

  1. Detecteer dat de gebruiker eerder de toegang heeft geweigerd.
  2. Geef de gebruiker de opdracht om handmatig opnieuw in te stellen of expliciet toegang te verlenen tot een bepaald apparaattype.

Het gedrag van een camera beheren die door een ander proces wordt gebruikt

  • In Windows Chrome en Windows Microsoft Edge: als u een gesprek start, deelneemt of accepteert met video ingeschakeld, en een ander proces (behalve de browser waarop de web-SDK wordt uitgevoerd) het cameraapparaat gebruikt, wordt het gesprek alleen gestart met audio en geen video. Er wordt een cameraStartFailed vlag voor diagnostische gegevens van de gebruiker gegenereerd omdat de camera niet kan worden gestart.

    Dezelfde situatie geldt voor het inschakelen van video mid-call. U kunt de camera in het andere proces uitschakelen, zodat het cameraapparaat wordt vrijgegeven en vervolgens opnieuw video vanuit het gesprek start. De video wordt vervolgens ingeschakeld voor het gesprek en externe deelnemers zien de video.

    Dit probleem bestaat niet in macOS Chrome of macOS Safari, omdat het besturingssysteem processen en threads het cameraapparaat kan delen.

  • Op mobiele apparaten: als een ProcessA het cameraapparaat aanvraagt terwijl ProcessB het gebruikt, neemt ProcessA het cameraapparaat over en stopt ProcessB met het gebruik ervan.

  • Op iOS Safari: u kunt 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. De vorige aanroepclient krijgt de cameraStoppedUnexpectedly vlag Diagnostische gegevens van de gebruiker.

Scherm delen beheren

Als u een toepassing sluit, wordt deze niet meer gedeeld

Stel dat u op het scherm van Chromium de Microsoft Teams-toepassing deelt. Vervolgens selecteert u de X-knop in de Teams-toepassing om deze te sluiten. Hoewel het venster is gesloten, blijft de Teams-toepassing op de achtergrond actief. Het pictogram wordt nog steeds weergegeven op de taakbalk van het bureaublad. Omdat de Teams-toepassing nog steeds wordt uitgevoerd, wordt deze nog steeds gedeeld met externe deelnemers.

Als u wilt voorkomen dat de toepassing wordt gedeeld op het scherm, moet u een van deze acties uitvoeren:

  • Klik met de rechtermuisknop op het pictogram van de toepassing op de taakbalk van het bureaublad en selecteer Afsluiten.
  • Selecteer de knop Delen stoppen in de browser.
  • Roep de API-bewerking van Call.stopScreenSharing() de SDK aan.

Safari kan alleen volledig scherm delen

Safari staat het delen van het scherm alleen toe voor het hele scherm. Dit gedrag is in tegenstelling tot Chromium, waarmee u het volledige scherm, een specifieke bureaublad-app of een specifiek browsertabblad kunt delen.

U kunt machtigingen voor schermdeling verlenen in macOS

Als u wilt delen in macOS Safari of macOS Chrome, verleent u de benodigde machtigingen aan de browsers in het menu besturingssysteem: Systeemvoorkeuren>beveiliging en privacyschermopname.>

Aanbevolen procedures voor de Systeemeigen SDK voor aanroepen van Azure Communication Services

In deze sectie vindt u informatie over aanbevolen procedures die zijn gekoppeld aan de Systeemeigen SDK van Azure Communication Services voor spraak- en videogesprekken.

Ondersteunde platforms

Hier volgen de minimale vereisten voor het besturingssysteemplatform om optimale functionaliteit van de Calling Native SDK 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 controleren

Voor het gebruik van de Calling Native SDK voor het plaatsen of ontvangen van aanroepen moeten consumenten elk platform machtigen voor toegang tot apparaatbronnen. Als ontwikkelaar moet u de gebruiker om toegang vragen en ervoor zorgen dat machtigingen zijn ingeschakeld. De consument machtigt deze toegangsrechten, dus controleer of deze momenteel over de vereiste machtigingen beschikt.

  • NSMicrophoneUsageDescription voor toegang tot de microfoon
  • NSCameraUsageDescription voor cameratoegang

De logboeken configureren

Het implementeren van logboekregistratie zoals beschreven in de zelfstudie over 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 ontwikkelaars aan om logboeken te configureren met behulp van de Logs-API. Zonder de logboeken kan het Microsoft-ondersteuningsteam niet helpen bij het opsporen van fouten en het oplossen van problemen met de oproepen.

CallID 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. Het Microsoft Ondersteuning team vraagt om hulp bij het oplossen van problemen met de oproepen.

U moet de CallID waarde bijhouden in de telemetrie die u in uw app configureert. Als u wilt weten hoe u de waarde voor elk platform ophaalt, volgt u de richtlijnen in de gids voor probleemoplossing.

Abonneren op diagnostische gegevens van gebruikers en statistieken over mediakwaliteit

U kunt deze Azure Communication Services-functies gebruiken om de gebruikerservaring te verbeteren:

  • Diagnostische gegevens voor gebruikers: bekijk eigenschappen van een aanroep om de oorzaak van problemen te bepalen die van invloed zijn op uw klanten.
  • Statistieken over mediakwaliteit: bekijk de metrische gegevens over de kwaliteit van audio, video en scherm delen voor metrische gegevens over inkomende en uitgaande gesprekken. U wordt aangeraden de gegevens te verzamelen en naar uw pijplijnopname te verzenden nadat een aanroep is beëindigd.

Foutafhandeling beheren

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 redenen achter oproepfouten te identificeren. Raadpleeg de gids voor probleemoplossing om eventuele problemen op te lossen.

Videostreams beheren

Zorg ervoor dat u de VideoStreamRendererView video niet meer weergeeft wanneer de gebruikersinterface de video niet meer weergeeft. Gebruik VideoStreamType dit om het type stroom te bepalen.

Algemeen geheugenbeheer uitvoeren

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.

Verwijder het goed. Verwijder alle aanroepobjecten na gebruik om systeembronnen vrij te maken en geheugenlekken te voorkomen. Zorg ervoor dat u zich afmeldt voor gebeurtenissen die geheugenlekken kunnen veroorzaken.

Overweeg hoe processen toegang hebben tot de camera of microfoon

Als op mobiele apparaten meerdere processen tegelijkertijd toegang proberen te krijgen tot de camera of microfoon, neemt het eerste proces om toegang aan te vragen het apparaat over. Hierdoor verliest het tweede proces onmiddellijk de toegang tot het proces.

Grootte van bibliotheek optimaliseren

Het optimaliseren van de grootte van bibliotheken in softwareontwikkeling is cruciaal om de volgende redenen, met name omdat toepassingen complexer en resource-intensief worden:

  • Toepassingsprestaties: kleinere bibliotheken verminderen de hoeveelheid code die een toepassing moet laden, parseren en uitvoeren. Deze vermindering 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. Deze afname is belangrijk voor mobiele apparaten, waarbij het geheugen vaak wordt beperkt. Een lager geheugengebruik kan leiden tot minder systeemcrashes en betere multitaskingprestaties.

Zie voor meer informatie: