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:
- Identifiera att användaren tidigare nekade åtkomst.
- 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åtkomstNSCameraUsageDescription
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: