Procedure consigliate: SDK per chiamate di Servizi di comunicazione di Azure

Questo articolo fornisce informazioni sulle procedure consigliate relative agli SDK per chiamate di Servizi di comunicazione di Azure.

Procedure consigliate per l'SDK Web per chiamate di Servizi di comunicazione di Azure

Questa sezione fornisce informazioni sulle procedure consigliate associate all'SDK Web (JavaScript) per chiamate di Servizi di comunicazione di Azure per chiamate vocali e videochiamate.

Collegare un microfono o abilitare un microfono da Gestione dispositivi quando è in corso una chiamata

Quando all'inizio di una chiamata di Servizi di comunicazione di Azure non è disponibile un microfono e successivamente lo diventa, la modifica genera un evento di diagnostica noMicrophoneDevicesEnumerated. Quando si verifica tale evento, l'applicazione deve richiamare askDevicePermission per ottenere il consenso dell'utente per enumerare i dispositivi. L'utente può quindi disattivare o disattivare l'audio del microfono.

Eliminazione di VideoStreamRendererView

Le applicazioni di Servizi di comunicazione devono eliminare VideoStreamRendererView o l'istanza di VideoStreamRenderer padre, quando non è più necessario.

Interrompere la chiamata in caso di evento onbeforeunload

L'applicazione deve richiamare call.hangup quando viene generato l'evento onbeforeunload.

Gestire più chiamate in più schede

L'applicazione non deve connettersi alle chiamate da più schede del browser contemporaneamente nei dispositivi mobili. Questa situazione può causare un comportamento non definito a causa dell'allocazione delle risorse per il microfono e la videocamera in un dispositivo. Si consiglia agli sviluppatori di interrompere sempre le chiamate in background prima di avviarne una nuova.

Gestire la disattivazione dell'audio da parte del sistema operativo all'arrivo di una chiamata telefonica

Durante una chiamata di Servizi di comunicazione di Azure (per iOS e Android), se arriva una chiamata telefonica o l'assistente vocale è attivato, il sistema operativo disattiva automaticamente il microfono e la videocamera dell'utente. In Android l'audio della chiamata viene attivato automaticamente e il video viene riavviato al termine della chiamata telefonica. In iOS l'attivazione dell'audio e il riavvio del video richiedono un intervento da parte dell'utente.

È possibile utilizzare l'evento di qualità microphoneMuteUnexpectedly per ascoltare la notifica che indica che il microfono è stato disattivato in modo imprevisto. Tenere presente che per partecipare nuovamente a una chiamata, è necessario usare SDK 1.2.3-beta.1 o versione successiva.

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
}

L'applicazione deve richiamare call.startVideo(localVideoStream); per avviare un flusso video e usare this.currentCall.unmute(); per riattivare l'audio.

Gestire i dispositivi

È possibile usare Azure Communication Services SDK per gestire i dispositivi e le operazioni multimediali.

L'applicazione non deve usare API native del browser come getUserMedia o getDisplayMedia per acquisire flussi all'esterno dell'SDK. In questo caso, è necessario eliminare manualmente i flussi multimediali prima di usare DeviceManager o altre API di gestione dei dispositivi tramite Communication Services SDK.

Richiedere le autorizzazioni del dispositivo

È possibile richiedere le autorizzazioni per i dispositivi usando l'SDK. L'applicazione deve usare DeviceManager.askDevicePermission per richiedere l'accesso ai dispositivi audio e/o video.

Se l'utente nega l'accesso, DeviceManager.askDevicePermission restituisce false per un tipo di dispositivo specifico (audio o video) nelle chiamate successive, anche dopo l'aggiornamento della pagina. In questo scenario, l'applicazione deve:

  1. Rilevare che l'utente ha precedentemente negato l'accesso.
  2. Indicare all'utente di reimpostare o concedere in modo esplicito l'accesso a un tipo di dispositivo specifico.

Gestire il comportamento di una videocamera usata da un altro processo

  • In Chrome per Windows e Microsoft Edge per Windows: se si avvia, si partecipa o si accetta una chiamata con il video attivato e un altro processo (diverso dal browser in cui è in esecuzione l'SDK Web) usa il dispositivo videocamera, la chiamata viene avviata solo con audio e senza video. Viene generato un flag di diagnostica cameraStartFailed utente perché l'avvio della videocamera non è riuscito.

    La stessa situazione si applica all'attivazione del video durante la chiamata. È possibile disattivare la videocamera nell'altro processo affinché il processo rilasci il dispositivo videocamera e quindi avviare nuovamente la videocamera dalla chiamata. Il video viene quindi attivato per la chiamata e i partecipanti remoti iniziano a vedere il video.

    Questo problema non si verifica in Chrome per macOS o Safari per macOS perché il sistema operativo consente ai processi e ai thread di condividere la videocamera.

  • Nei dispositivi mobili: se il Processo A richiede il dispositivo videocamera mentre lo sta usando il Processo B, Processo A assume il controllo della videocamera e Processo B smette di usarla.

  • In Safari per iOS: non è possibile attivare la videocamera per più client di chiamata nella stessa scheda o tra schede. Quando un client di chiamata usa la videocamera, assume il controllo della videocamera da qualsiasi client di chiamata precedente che la usava. Il client di chiamata precedente ottiene un flag di diagnostica cameraStoppedUnexpectedly utente.

Gestire la condivisione dello schermo

La chiusura di un'applicazione non ne arresta la condivisione

Si supponga che, da Chromium, si condivida la schermata dell'applicazione Microsoft Teams. Si seleziona quindi il pulsante X nell'applicazione Teams per chiuderla. Anche se la finestra è chiusa, l'applicazione Teams continua a essere in esecuzione in background. L'icona viene ancora visualizzata sulla barra delle applicazioni desktop. Poiché l'applicazione Teams è ancora in esecuzione, la schermata è ancora condivisa con i partecipanti remoti.

Per arrestare la condivisione della schermata dell'applicazione, è necessario eseguire una di queste azioni:

  • Fare clic con il pulsante destro del mouse sull'icona dell'applicazione sulla barra delle applicazioni desktop e quindi scegliere Esci.
  • Selezionare il pulsante Interrompi condivisione nel browser.
  • Chiamare l'operazione API Call.stopScreenSharing() dell'SDK.

Safari può eseguire solo la condivisione a schermo intero

Safari consente la condivisione dello schermo solo per l'intera schermata. Questo comportamento è diverso da Chromium, che consente di condividere lo schermo intero, un'app desktop specifica o una scheda del browser specifica.

È possibile concedere autorizzazioni di condivisione dello schermo in macOS

Per condividere lo schermo in Safari per macOS o Chrome per macOS, concedere le autorizzazioni necessarie ai browser nel menu del sistema operativo: Preferenze di sistema>Sicurezza e privacy>Registrazione schermo.

Procedure consigliate per l'SDK nativo per chiamate di Servizi di comunicazione di Azure

Questa sezione fornisce informazioni sulle procedure consigliate associate all'SDK nativo per chiamate di Servizi di comunicazione di Azure per chiamate vocali e videochiamate.

Piattaforme supportate

Ecco i requisiti minimi della piattaforma del sistema operativo per garantire la funzionalità ottimale dell'SDK nativo per le chiamate.

  • Supporto per iOS 10.0 e versioni successive in fase di compilazione e iOS 12.0 e versioni successive in fase di esecuzione
  • Xcode 12.0+
  • Supporto per iPadOS 13.0+

Verificare le autorizzazioni del dispositivo per le richieste di app

Per usare l'SDK nativo per le chiamate per effettuare o ricevere chiamate, i consumer devono autorizzare ogni piattaforma ad accedere alle risorse del dispositivo. Gli sviluppatori devono richiedere l'accesso all'utente e assicurarsi che le autorizzazioni siano abilitate. L'utente autorizza questi diritti di accesso, quindi verificare che disponga delle autorizzazioni necessarie.

  • NSMicrophoneUsageDescription per l'accesso al microfono
  • NSCameraUsageDescription per l'accesso alla videocamera

Configurare i log

L'implementazione della registrazione come descritto nell'esercitazione sul recupero dei file di log è fondamentale. I log dettagliati consentono di diagnosticare i problemi specifici dei modelli di dispositivo o delle versioni del sistema operativo che soddisfano i criteri minimi per l'SDK. È consigliabile che gli sviluppatori configurino i log usando l'API Log. Senza i log, il team di supporto tecnico Microsoft non può aiutare a eseguire il debug e risolvere i problemi delle chiamate.

Tracciare CallID

CallID è l'ID univoco per una chiamata. Identifica gli eventi correlati di tutti i partecipanti e gli endpoint che si connettono durante una singola chiamata. Nella maggior parte dei casi, è possibile usarlo per esaminare i log. Il team di supporto tecnico Microsoft chiede questo ID per risolvere i problemi delle chiamate.

È consigliabile tenere traccia del valore di CallID nei dati di telemetria configurati nell'app. Per informazioni su come recuperare il valore per ogni piattaforma, seguire le linee guida riportate nella guida alla risoluzione dei problemi.

Sottoscrivere la diagnostica per utenti e le statistiche sulla qualità dei contenuti multimediali

È possibile usare queste funzionalità di Servizi di comunicazione di Azure per migliorare l'esperienza utente:

  • Diagnostica per utenti: consente di esaminare le proprietà di una chiamata per determinare la causa dei problemi che interessano i clienti.
  • Statistiche sulla qualità dei contenuti multimediali: consente di esaminare le metriche di qualità dettagliate per audio, video e condivisione dello schermo per le metriche delle chiamate in ingresso e in uscita. È consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine di una chiamata.

Gestire gli errori

Se si verificano errori durante la chiamata o l'implementazione, i metodi restituiscono oggetti errore che contengono codici errore. È fondamentale usare questi oggetti errore per una corretta gestione degli errori e per visualizzare gli avvisi. Gli stati di chiamata restituiscono anche codici errore per identificare i motivi alla base degli errori delle chiamate. È possibile fare riferimento alla guida alla risoluzione dei problemi per risolvere eventuali problemi.

Gestire i flussi video

Assicurarsi di eliminare VideoStreamRendererView quando l'interfaccia utente non visualizza più il video. Usare VideoStreamType per determinare il tipo del flusso.

Eseguire la gestione generale della memoria

Preallocare le risorse. Inizializzare il client per le chiamate e le risorse necessarie durante la fase di avvio dell'app anziché su richiesta. Questo approccio riduce la latenza durante l'avvio di una chiamata.

Eliminare in modo corretto. Eliminare tutti gli oggetti chiamata dopo l'uso per liberare le risorse di sistema ed evitare perdite di memoria. Assicurarsi di annullare la sottoscrizione a eventi che potrebbero causare perdite di memoria.

Valutare il modo in cui i processi accedono alla videocamera o al microfono

Nei dispositivi mobili, se più processi tentano di accedere contemporaneamente alla videocamera o al microfono, il primo processo che richiede l'accesso assume il controllo del dispositivo. Di conseguenza, il secondo processo perde immediatamente l'accesso.

Ottimizzare le dimensioni della libreria

L'ottimizzazione delle dimensioni delle librerie nello sviluppo software è fondamentale per i motivi seguenti, in particolare quando le applicazioni diventano più complesse e a elevato utilizzo di risorse:

  • Prestazioni dell'applicazione: le librerie più piccole riducono la quantità di codice che un'applicazione deve caricare, analizzare ed eseguire. Questa riduzione può migliorare significativamente il tempo di avvio e le prestazioni complessive dell'applicazione, in particolare nei dispositivi con risorse limitate.

  • Utilizzo della memoria: riducendo al minimo le dimensioni della libreria, è possibile ridurre il footprint della memoria di runtime di un'applicazione. Questa diminuzione è importante per i dispositivi mobili, in cui la memoria è spesso vincolata. Un utilizzo inferiore della memoria può causare un minor numero di arresti anomali del sistema e prestazioni di multitasking migliori.

Per altre informazioni, vedi: