Condividi tramite


Procedure consigliate: Servizi di comunicazione di Azure chiamare GLI SDK

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

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

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

SDK voce e videochiamata JavaScript

Microfono plug-in o abilitare il microfono da Gestione dispositivi quando Servizi di comunicazione di Azure chiamata in corso

Quando non è disponibile alcun microfono all'inizio di una chiamata e quindi diventa disponibile un microfono, viene generato l'evento di diagnostica di chiamata "noMicrophoneDevicesEnumerated". In questo caso, l'applicazione deve richiamare askDevicePermission per ottenere il consenso dell'utente per enumerare i dispositivi. L'utente potrà quindi disattivare o disattivare l'audio del microfono.

Eliminare la visualizzazione del renderer del flusso video

Le applicazioni di Servizi di comunicazione devono eliminare VideoStreamRendererView, o la relativa istanza padre VideoStreamRenderer , quando non è più necessaria.

Blocco della chiamata all'evento onbeforeunload

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

Gestione di più chiamate su più schede su dispositivi mobili

L'applicazione non deve connettersi alle chiamate da più schede del browser contemporaneamente, perché ciò può causare un comportamento indefinito a causa dell'allocazione delle risorse per microfono e fotocamera nel dispositivo. Gli sviluppatori sono invitati a appendere sempre le chiamate quando vengono completate in background prima di avviarne una nuova.

Gestire la disattivazione della chiamata del sistema operativo quando arriva la chiamata telefonica.

Durante una chiamata Servizi di comunicazione di Azure (sia per iOS che per Android) se viene attivata una telefonata o l'assistente vocale, il sistema operativo disattiva automaticamente il microfono e la fotocamera dell'utente. In Android, la chiamata annulla automaticamente l'audio e il video viene riavviato al termine della chiamata telefonica. In iOS, richiede l'azione dell'utente per "annullare l'audio" e "avviare di nuovo il video". È possibile ascoltare la notifica che il microfono è stato disattivato in modo imprevisto con l'evento di qualità di microphoneMuteUnexpectedly. Prendere nota per poter partecipare di nuovo a una chiamata correttamente, è 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 deve usare this.currentCall.unmute(); per annullare l'audio.

Gestione dei dispositivi

È possibile usare Servizi di comunicazione di Azure 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 del dispositivo 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 restituirà 'false' per un determinato tipo di dispositivo (audio o video) nelle chiamate successive, anche dopo l'aggiornamento della pagina. In questo scenario, l'applicazione deve rilevare che l'utente ha precedentemente negato l'accesso e indicare all'utente di reimpostare o concedere esplicitamente l'accesso a un determinato tipo di dispositivo.

Fotocamera usato da un altro processo

  • In Windows Chrome e Windows Microsoft Edge, se si avvia/partecipa/accetta una chiamata con video su e il dispositivo fotocamera viene usato da un altro processo diverso dal browser in cui è in esecuzione l'SDK Web, la chiamata viene avviata solo con audio e nessun video. Viene generato un oggetto UFD cameraStartFailed perché la fotocamera non è stata avviata perché è stata usata da un altro processo. Lo stesso vale per l'attivazione del video a metà chiamata. È possibile disattivare la fotocamera nell'altro processo in modo che il processo rilasci il dispositivo fotocamera, e quindi avviare nuovamente il video dalla chiamata e video ora si attiva per la chiamata e i partecipanti remoti inizieranno a vedere il video.
  • Questo non è un problema in macOS Chrome né macOS Safari perché il sistema operativo consentirà ai processi o ai thread di condividere il dispositivo fotocamera.
  • Nei dispositivi mobili, se un ProcessA richiede il dispositivo fotocamera e viene usato da ProcessB, ProcessA supera il dispositivo fotocamera e ProcessB smette di usare il dispositivo fotocamera
  • In safari iOS non è possibile avere la fotocamera su per più client di chiamata all'interno della stessa scheda né tra schede. Quando un client di chiamata usa la fotocamera, sorpassa la fotocamera da qualsiasi client di chiamata precedente che lo usava. Il client di chiamata precedente ottiene un oggetto cameraStoppedUnexpectedly UFD.

Condivisione dello schermo

La chiusura dell'applicazione non impedisce la condivisione

Ad esempio, si supponga che da Chromium, si condivide l'applicazione Microsoft Teams. Selezionare quindi il pulsante "X" nell'applicazione Teams per chiuderlo. L'applicazione Teams non verrà chiusa e sarà ancora in esecuzione in background. Vedrai ancora l'icona in basso a destra della barra del desktop. Poiché l'applicazione Teams è ancora in esecuzione, significa che è ancora in fase di condivisione dello schermo e il partecipante remoto nella chiamata può comunque visualizzare l'applicazione Teams condivisa sullo schermo. Per impedire la condivisione dello schermo dell'applicazione, è necessario fare clic con il pulsante destro del mouse sull'icona sulla barra del desktop e quindi fare clic su Esci. In alternativa, è necessario fare clic sul pulsante "Interrompi condivisione" nel browser. In alternativa, chiamare l'API Call.stopScreenSharing() dell'SDK.

Safari può eseguire solo la condivisione a schermo intero

Safari consente solo di condividere l'intero schermo. A differenza di Chromium, che consente di condividere schermo intero, app desktop specifica o scheda del browser specifica.

Autorizzazioni di condivisione dello schermo in macOS

Per eseguire la condivisione dello schermo in macOS Safari o macOS Chrome, le autorizzazioni di registrazione dello schermo devono essere concesse ai browser nel menu del sistema operativo: "Preferenze di sistema" -> "Sicurezza e privacy" -> "Registrazione dello schermo".

procedure consigliate per Servizi di comunicazione di Azure SDK nativo

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

Piattaforme supportate

Ecco i requisiti minimi della piattaforma del sistema operativo per garantire una funzionalità ottimale degli SDK nativi per chiamate.

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

Autorizzazioni del dispositivo di richiesta dell'app

Per usare gli SDK nativi chiamante per effettuare o ricevere chiamate, è necessario autorizzare ogni piattaforma ad accedere alle risorse del dispositivo. Gli sviluppatori devono richiedere l'accesso all'utente e assicurarsi che siano abilitati. L'utente autorizza questi diritti di accesso, quindi verificare che siano stati concessi in precedenza le autorizzazioni.

  • NSMicrophoneUsageDescription per l'accesso al microfono.
  • NSCameraUsageDescription per l'accesso alla fotocamera.

Configurare i log

L'implementazione della registrazione in base all'esercitazione sul recupero dei file di log è più critica che mai. I log dettagliati consentono di diagnosticare i problemi specifici dei modelli di dispositivo o delle versioni del sistema operativo che soddisfano i criteri minimi dell'SDK. Si consiglia agli sviluppatori che iniziano a configurare l'API Logs senza i log che il team supporto tecnico Microsoft non sarà in grado di aiutare a eseguire il debug e risolvere i problemi delle chiamate.

Tenere traccia dell'ID chiamata

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 viene usato per esaminare i log e supporto tecnico Microsoft team chiedergli di risolvere i problemi delle chiamate. È consigliabile tenere traccia dei CallID dati di telemetria configurati nell'app, è possibile seguire le linee guida nella guida alla risoluzione dei problemi per comprendere come recuperarlo per ogni piattaforma.

Sottoscrivere UFD (Diagnostica per utenti) e statistiche sulla qualità dei supporti

  • Diagnostica con connessione utente (UFD) che può essere usata per esaminare varie proprietà di una chiamata per determinare quale problema potrebbe verificarsi durante la chiamata che interessa i clienti.
  • Le statistiche sulla qualità dei contenuti multimediali esaminano le metriche di qualità audio, video e di condivisione dello schermo di basso livello per le metriche delle chiamate in ingresso e in uscita. È consigliabile raccogliere i dati e inviarli all'inserimento della pipeline al termine della chiamata.

Gestione errori

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

Gestione di Flussi video

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

Gestione generale della memoria

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

Eliminare correttamente. Assicurarsi che tutti gli oggetti chiamata vengano eliminati correttamente dopo l'uso per liberare le risorse di sistema ed evitare perdite di memoria. Assicurarsi di annullare la sottoscrizione agli eventi che impediscono perdite di memoria.

Fotocamera o microfono usato da un altro processo

È importante notare che nei dispositivi mobili se più processi tentano di accedere contemporaneamente alla fotocamera o al microfono, il primo processo per richiedere l'accesso assumerà il controllo del dispositivo. Di conseguenza, il secondo processo perderà immediatamente l'accesso.

Ottimizzare le dimensioni dell'APP usando la libreria dell'interfaccia utente

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

Prestazioni dell'applicazione: le librerie più piccole riducono la quantità di codice che deve essere caricata, analizzata ed eseguita da un'applicazione. Ciò può migliorare significativamente il tempo di avvio e le prestazioni complessive dell'applicazione, in particolare nei dispositivi con risorse limitate.

Utilizzo memoria: riducendo al minimo le dimensioni della libreria, è possibile ridurre il footprint di memoria di runtime di un'applicazione. Questo aspetto è 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.

Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: