Metodtips: Azure Communication Services anropar SDK:er

Den här artikeln innehåller information om metodtips som rör SDK:er för Azure Communication Services-samtal.

Metodtips för Azure Communication Services Calling Web SDK

Det här avsnittet innehåller information om metodtips som är associerade med Azure Communication Services Calling Web (JavaScript) SDK för röst- och videosamtal.

Anslut en mikrofon eller aktivera en mikrofon från enhetshanteraren när ett samtal pågår

När ingen mikrofon är tillgänglig i början av ett Azure Communication Services-anrop, och sedan en mikrofon blir tillgänglig, genererar ändringen en noMicrophoneDevicesEnumerated diagnostikhändelse. När den händelsen inträffar måste ditt program anropa askDevicePermission för att få användarens medgivande för att räkna upp enheter. Användaren kan sedan stänga av eller slå på mikrofonen.

Avyttra VideoStreamRendererView

Communication Services-program bör ta bort VideoStreamRendererView, eller dess överordnade VideoStreamRenderer instans, när de inte längre behövs.

Lägg på samtalet på en onbeforeunload-händelse

Programmet bör anropas call.hangup när händelsen onbeforeunload genereras.

Hantera flera anrop på flera flikar

Programmet bör inte ansluta till anrop från flera webbläsarflikar samtidigt på mobila enheter. Den här situationen kan orsaka odefinierat beteende på grund av resursallokering för mikrofonen och kameran på en enhet. Vi uppmuntrar utvecklare att alltid lägga på samtal när de är klara i bakgrunden innan de startar ett nytt.

Hantera att operativsystemet stänger av ett samtal när ett telefonsamtal kommer in

Under ett Azure Communication Services-samtal (för både iOS och Android), om ett telefonsamtal kommer in eller röstassistenten aktiveras, stänger operativsystemet automatiskt av användarens mikrofon och kamera. På Android slås samtalet automatiskt av och videon startas om när telefonsamtalet har avslutats. Vid iOS kräver det användaråtgärd att slå på och starta om videon.

Du kan använda kvalitetshändelsen för för att lyssna efter meddelandet om att mikrofonen oväntat stängdes av microphoneMuteUnexpectedly . Tänk på att du måste använda SDK 1.2.3-beta.1 eller senare för att återansluta till ett anrop korrekt.

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
}

Programmet bör anropa call.startVideo(localVideoStream); för att starta en videoström och bör använda this.currentCall.unmute(); för att slå på ljudet.

Hantera enheter

Du kan använda Azure Communication Services SDK för att hantera dina enheter och medieåtgärder.

Ditt program bör inte använda inbyggda webbläsar-API:er som getUserMedia eller getDisplayMedia för att hämta strömmar utanför SDK:t. Om du gör det måste du ta bort dina medieströmmar manuellt innan du använder DeviceManager eller andra API:er för enhetshantering via Communication Services SDK.

Begära enhetsbehörigheter

Du kan begära enhetsbehörigheter med hjälp av SDK:n. Ditt program bör använda DeviceManager.askDevicePermission för att begära åtkomst till ljud- och/eller videoenheter.

Om användaren nekar åtkomst DeviceManager.askDevicePermission returneras false för en viss enhetstyp (ljud eller video) vid efterföljande anrop, även efter att sidan har uppdaterats. I det här scenariot måste programmet:

  1. Identifiera att användaren tidigare nekade åtkomst.
  2. Instruera användaren att manuellt återställa eller uttryckligen bevilja åtkomst till en viss enhetstyp.

Hantera beteendet hos en kamera som en annan process använder

  • I Windows Chrome och Windows Microsoft Edge: Om du startar, ansluter eller accepterar ett samtal med video på och en annan process (förutom webbläsaren som webb-SDK:n körs på) använder kameraenheten, startas samtalet endast med ljud och ingen video. En cameraStartFailed flagga för användarriktad diagnostik aktiveras eftersom kameran inte kunde startas.

    Samma situation gäller för att aktivera video mitt i samtalet. Du kan stänga av kameran i den andra processen så att den processen släpper kameraenheten och sedan starta video igen från samtalet. Videon aktiveras sedan för samtalet och fjärrdeltagarna börjar se videon.

    Det här problemet finns inte i macOS Chrome eller macOS Safari eftersom operativsystemet låter processer och trådar dela kameraenheten.

  • På mobila enheter: Om en ProcessA begär kameraenheten medan ProcessB använder den, kör ProcessA om kameraenheten och ProcessB slutar använda den.

  • I iOS Safari: Du kan inte ha kameran på för flera samtalsklienter på samma flik eller mellan flikar. När någon samtalsklient använder kameran går den om kameran från alla tidigare samtalsklienter som använde den. Den tidigare anropsklienten hämtar en cameraStoppedUnexpectedly flagga för användarriktad diagnostik.

Hantera skärmdelning

Att stänga ett program hindrar inte att det delas

Låt oss säga att från Chromium skärm delar du Microsoft Teams-programmet. Sedan väljer du X-knappen i Teams-programmet för att stänga den. Även om fönstret är stängt fortsätter Teams-programmet att köras i bakgrunden. Ikonen visas fortfarande i aktivitetsfältet på skrivbordet. Eftersom Teams-programmet fortfarande körs delas det fortfarande av skärmen med fjärranslutna deltagare.

Om du vill förhindra att programmet delas av skärmen måste du vidta någon av följande åtgärder:

  • Högerklicka på programmets ikon i aktivitetsfältet på skrivbordet och välj sedan Avsluta.
  • Välj knappen Sluta dela i webbläsaren.
  • Anropa SDK:ns Call.stopScreenSharing() API-åtgärd.

Safari kan bara dela i helskärmsläge

Safari tillåter endast skärmdelning för hela skärmen. Det beteendet skiljer sig från Chromium, vilket gör att du kan skärm dela helskärmsläge, en specifik skrivbordsapp eller en specifik webbläsarflik.

Du kan bevilja behörigheter för skärmdelning på macOS

Om du vill skärmresurs i macOS Safari eller macOS Chrome, beviljar du nödvändiga behörigheter till webbläsarna på OS-menyn: Systeminställningar>Säkerhet och Sekretessskärminspelning.>

Metodtips för Azure Communication Services Calling Native SDK

Det här avsnittet innehåller information om metodtips som är associerade med Azure Communication Services Calling Native SDK för röst- och videosamtal.

Plattformar som stöds

Här är de lägsta kraven på operativsystemplattform för att säkerställa optimala funktioner i den anropande interna SDK:en.

  • Stöd för iOS 10.0+ vid byggtid och iOS 12.0+ vid körning
  • Xcode 12.0+
  • Stöd för iPadOS 13.0+

Verifiera enhetsbehörigheter för appbegäranden

Om du vill använda den inbyggda SDK:n för att ringa eller ta emot anrop måste konsumenterna auktorisera varje plattform för åtkomst till enhetsresurser. Som utvecklare måste du be användaren om åtkomst och se till att behörigheter är aktiverade. Konsumenten auktoriserar dessa åtkomsträttigheter, så kontrollera att de för närvarande har de behörigheter som krävs.

  • NSMicrophoneUsageDescription för mikrofonåtkomst
  • NSCameraUsageDescription för kameraåtkomst

Konfigurera loggarna

Det är viktigare än någonsin att implementera loggning enligt beskrivningen i självstudien om att hämta loggfiler . Detaljerade loggar hjälper dig att diagnostisera problem som är specifika för enhetsmodeller eller os-versioner som uppfyller minimikraven för SDK. Vi uppmuntrar utvecklare att konfigurera loggar med hjälp av Logs-API:et. Utan loggarna kan Microsofts supportteam inte hjälpa till att felsöka och felsöka anropen.

Spåra CallID

CallID är det unika ID:t för ett anrop. Den identifierar korrelerade händelser från alla deltagare och slutpunkter som ansluter under ett enda anrop. I de flesta fall använder du den för att granska loggarna. Microsofts supportteam ber om hjälp med att felsöka anropen.

Du bör spåra CallID värdet i telemetrin som du konfigurerar i din app. Om du vill förstå hur du hämtar värdet för varje plattform följer du riktlinjerna i felsökningsguiden.

Prenumerera på användarinriktad diagnostik och mediekvalitetsstatistik

Du kan använda dessa Azure Communication Services-funktioner för att förbättra användarupplevelsen:

  • Användarinriktad diagnostik: Granska egenskaperna för ett anrop för att fastställa orsaken till problem som påverkar dina kunder.
  • Statistik om mediekvalitet: Granska kvalitetsmåtten för ljud, video och skärmdelning på låg nivå för inkommande och utgående samtalsmått. Vi rekommenderar att du samlar in data och skickar dem till din pipelineinmatning när ett anrop har avslutats.

Hantera felhantering

Om det finns fel under anropet eller implementeringen returnerar metoderna felobjekt som innehåller felkoder. Det är viktigt att använda dessa felobjekt för korrekt felhantering och för att visa aviseringar. Anropstillstånden returnerar också felkoder för att identifiera orsakerna bakom anropsfel. Du kan läsa felsökningsguiden för att lösa eventuella problem.

Hantera videoströmmar

Se till att ta bort VideoStreamRendererView när användargränssnittet inte längre visar videon. Använd VideoStreamType för att fastställa dataströmmens typ.

Utföra allmän minneshantering

Förallokera resurser. Initiera den anropande klienten och alla nödvändiga resurser under appens startfas i stället för på begäran. Den här metoden minskar svarstiden vid start av ett anrop.

Kassera på rätt sätt. Ta bort alla anropsobjekt efter användning för att frigöra systemresurser och undvika minnesläckor. Se till att avbryta prenumerationen på händelser som kan orsaka minnesläckor.

Överväg hur processer kommer åt kameran eller mikrofonen

Om flera processer försöker komma åt kameran eller mikrofonen samtidigt på mobila enheter tar den första processen för att begära åtkomst kontroll över enheten. Det innebär att den andra processen omedelbart förlorar åtkomsten till den.

Optimera biblioteksstorlek

Att optimera bibliotekens storlek inom programvaruutveckling är avgörande av följande skäl, särskilt när program blir mer komplexa och resursintensiva:

  • Programprestanda: Mindre bibliotek minskar mängden kod som ett program måste läsa in, parsa och köra. Den här minskningen kan avsevärt förbättra starttiden och den övergripande prestandan för ditt program, särskilt på enheter som har begränsade resurser.

  • Minnesanvändning: Genom att minimera biblioteksstorleken kan du minska körningsminnets fotavtryck för ett program. Den här minskningen är viktig för mobila enheter, där minnet ofta är begränsat. Lägre minnesanvändning kan leda till färre systemkrascher och bättre prestanda för multitasking.

Mer information finns i: