Condividi tramite


Problemi noti negli SDK e nelle API

Questi articoli forniscono informazioni sulle limitazioni e sui problemi noti relativi alle API di call automation di Servizi di comunicazione di Azure e agli SDK per chiamate di Servizi di comunicazione.

Importante

Esistono diversi fattori che possono influire sulla qualità dell'esperienza di chiamata. Per altre informazioni sulla configurazione di rete di Servizi di comunicazione e sulle procedure consigliate per il test, vedere Raccomandazioni di rete.

Chiamata di Web SDK

Le sezioni seguenti forniscono informazioni sui problemi noti associati agli SDK per chiamate vocali e video di JavaScript Servizi di comunicazione di Azure.

Chrome M115 - Regressione

Chrome versione 115 per Android ha introdotto una regressione quando si effettuano videochiamate: il risultato di questo bug è un utente che effettua una chiamata su Servizi di comunicazione di Azure con questa versione di Chrome non ha video in uscita in Group e Servizi di comunicazione di Azure-Microsoft Teams chiamate.

  • Questa regressione è un problema noto introdotto in Chromium
  • Come mitigazione a breve termine, indicare agli utenti di usare Microsoft Edge o Firefox in Android o evitare di usare Google Chrome 115/116 in Android

Problemi noti di Firefox

Il supporto del browser desktop firefox è ora disponibile in anteprima pubblica. I problemi noti sono:

  • L'enumerazione degli altoparlanti non è disponibile: se si usa Firefox, l'app non può enumerare o selezionare gli altoparlanti tramite Gestione dispositivi di Servizi di comunicazione. In questo scenario è necessario selezionare i dispositivi tramite il sistema operativo.
  • Le fotocamere virtuali non sono attualmente supportate durante l'esecuzione di videochiamate desktop di Firefox.

Problemi noti di iOS Chrome

Il supporto del browser Chrome per iOS è ora disponibile in anteprima pubblica. I problemi noti sono:

  • Nessun audio in uscita e in ingresso quando si passa dal browser allo sfondo o bloccando il dispositivo. Questo problema è stato risolto nella versione iOS 16.4+.
  • Nessun audio in ingresso/in uscita proveniente dal visore VR Bluetooth. Quando un utente connette il visore VR Bluetooth al centro di Servizi di comunicazione di Azure chiamata, l'audio viene ancora fuori dall'altoparlante fino a quando l'utente non si blocca e sblocca il telefono. Questo problema è stato riscontrato nelle versioni precedenti di iOS (15.6, 15.7) e non è riproducibile in iOS 16.

iOS Safari visualizza una dimensione di risoluzione non corretta dell'anteprima della fotocamera

Questo bug si verifica nelle versioni di iOS 16.7 o iOS 17 precedenti alla 17.4 quando gli utenti ruotano i telefoni o abilitano/disabilitano il video durante la chiamata. L'anteprima della fotocamera visualizza brevemente una dimensione di risoluzione non corretta prima di tornare alla normale. Il problema non è riproducibile in iOS 17.4 Beta. Bug webKit correlato qui.

IOS 16 ha introdotto bug quando si inserisce il browser in background durante una chiamata

La versione iOS 16 ha introdotto un bug che può arrestare la Servizi di comunicazione di Azure chiamata audio\video quando si usa il browser per dispositivi mobili Safari. Apple è a conoscenza di questo problema e sta cercando una correzione sul loro lato. L'impatto potrebbe essere che una chiamata Servizi di comunicazione di Azure potrebbe smettere di funzionare durante una chiamata e l'unica risoluzione per farlo funzionare di nuovo è fare in modo che il cliente finale riavvii il telefono.

Per riprodurre questo bug:

  • Chiedere a un utente di usare un iPhone che esegue iOS 16
  • Partecipare Servizi di comunicazione di Azure chiamata (solo con audio o con audio e video) usando il browser per dispositivi mobili Safari iOS
  • Se durante una chiamata qualcuno inserisce il browser Safari in background e visualizza YouTube O riceve una chiamata FaceTime\telefono mentre si è connessi tramite un dispositivo Bluetooth

Risultati:

  • Dopo alcuni minuti di questa situazione, il video in ingresso e in uscita potrebbe smettere di funzionare.
  • L'unico modo per ottenere Servizi di comunicazione di Azure chiamata al lavoro di nuovo è fare in modo che l'utente finale riavvii il telefono.

Chrome M98 - Regressione

Chrome versione 98 ha introdotto una regressione con generazione anomala di fotogrammi chiave video che influisce sulla risoluzione di un flusso video inviato negativamente per la maggior parte degli utenti (70%+).

  • Questa regressione è un problema noto introdotto in Chromium

Durante una chiamata PSTN, l'utente può comunque ascoltare l'audio dalla chiamata ACS

Questo problema si verifica quando un utente di Android Chrome riscontra una chiamata PSTN in ingresso Dopo aver risposto alla chiamata PSTN, il microfono nella chiamata ACS viene disattivato. L'audio in uscita della chiamata ACS viene disattivato, in modo che altri partecipanti non possano sentire l'utente che è la chiamata PSTN. Vale la pena notare che l'audio in ingresso dell'utente non è disattivato e questo comportamento è intrinseco al browser.

Nessun audio in ingresso durante una chiamata

In alcuni casi, un utente in una chiamata Servizi di comunicazione di Azure potrebbe non essere in grado di ascoltare l'audio dai partecipanti remoti. C'è un bug di Chromium correlato che causa questo problema, il problema può essere mitigato riconnessione a PeerConnection. È stata aggiunta questa soluzione alternativa a partire da SDK 1.9.1 (stabile) e SDK 1.10.0 (beta).

In Android Chrome, se un utente partecipa Servizi di comunicazione di Azure chiamata più volte, l'audio in ingresso può anche scomparire. L'utente non è in grado di ascoltare l'audio di altri partecipanti finché la pagina non viene aggiornata. Questo problema è stato risolto in SDK 1.10.1-beta.1 e migliorato l'utilizzo delle risorse audio.

Alcuni dispositivi Android hanno esito negativo, ad eccezione delle chiamate di gruppo.

Molti dispositivi Android specifici non si avviano, accettano chiamate e riunioni. I dispositivi che si verificano in questo problema, non possono recuperare e non riescono a ogni tentativo. Si tratta principalmente di dispositivi Samsung modello A, in particolare modelli A326U, A125U e A215U.

  • Questa regressione è un problema noto introdotto in Chromium.

Android Chrome disattiva la chiamata dopo che il browser passa in background per un minuto

In Android Chrome, se un utente si trova in una chiamata Servizi di comunicazione di Azure e inserisce il browser in background per un minuto. Il microfono perde l'accesso e gli altri partecipanti alla chiamata non riescono a sentire l'audio dell'utente. Quando l'utente porta il browser in primo piano, il microfono è nuovamente disponibile. Bug di chromium correlati qui e qui

Un utente mobile (iOS e Android) ha eliminato la chiamata ma viene ancora visualizzata nell'elenco dei partecipanti.

Il problema può verificarsi se un utente mobile lascia la chiamata di gruppo Servizi di comunicazione di Azure senza usare l'API Call.hangUp(). Quando un utente mobile chiude il browser o aggiorna la pagina Web senza appendere, altri partecipanti alla chiamata di gruppo possono comunque visualizzare l'utente mobile nell'elenco dei partecipanti per circa 60 secondi.

iOS Safari aggiorna la pagina se l'utente passa a un'altra app e torna al browser

Il problema può verificarsi se un utente in una chiamata Servizi di comunicazione di Azure con iOS Safari e passa ad altre app per un po'. Dopo che l'utente torna al browser, la pagina del browser potrebbe essere aggiornata. Questo perché il sistema operativo termina il browser. Un modo per attenuare questo problema consiste nel mantenere alcuni stati e ripristinare dopo l'aggiornamento della pagina.

Utenti iOS 15.1 che partecipano a chiamate di gruppo o riunioni di Microsoft Teams.

  • A volte quando viene ricevuta la scheda PSTN in ingresso con la chiamata o la riunione si blocca. Bug relativi al WebKit qui e qui.

Microfono locale/fotocamera disattiva quando si verificano determinate interruzioni in iOS Safari e Android Chrome.

Questo problema può verificarsi se un'altra applicazione o il sistema operativo acquisisce il controllo del microfono o della fotocamera. Ecco alcuni esempi che possono verificarsi mentre un utente è nella chiamata:

  • Una chiamata in arrivo arriva tramite PSTN (Public Switched Telephone Network) e acquisisce l'accesso al dispositivo microfono.
  • Un utente riproduce un video di YouTube, ad esempio o avvia una chiamata FaceTime. Il passaggio a un'altra applicazione nativa può acquisire l'accesso al microfono o alla fotocamera.
  • Un utente abilita Siri, che acquisisce l'accesso al microfono.

In iOS, ad esempio, mentre in una chiamata Servizi di comunicazione di Azure, se viene eseguita una chiamata PSTN, viene generato un microfonoMutedUnexepectedly bad UFD e l'audio smette di fluire nella chiamata Servizi di comunicazione di Azure e la chiamata viene contrassegnata come disattivata. Quando la chiamata PSTN è finita, l'utente deve annullare l'audio Servizi di comunicazione di Azure chiamata per avviare nuovamente il flusso nella chiamata Servizi di comunicazione di Azure. Nel caso di Android Chrome quando arriva una chiamata PSTN, l'audio smette di fluire nella chiamata Servizi di comunicazione di Azure e la chiamata Servizi di comunicazione di Azure non viene contrassegnata come disattivata. In questo caso, non esiste alcun evento UFD con microfonoMutedUnexepectedly. Al termine della chiamata PSTN, Android Chrome riprende automaticamente l'audio e l'audio inizia normalmente a fluire di nuovo nella chiamata Servizi di comunicazione di Azure.

Nel caso in cui la fotocamera sia attivata e si verifichi un'interruzione, Servizi di comunicazione di Azure chiamata potrebbe o meno perdere la fotocamera. Se persa, la fotocamera viene contrassegnata come disattivata e l'utente deve riattivarlo dopo l'interruzione ha rilasciato la fotocamera.

Occasionalmente, i dispositivi microfono o fotocamera non vengono rilasciati in tempo e possono causare problemi con la chiamata originale. Ad esempio, se l'utente tenta di annullare l'audio durante la visualizzazione di un video di YouTube o se una chiamata PSTN è attiva contemporaneamente.

I flussi video in ingresso non interrompono il rendering se l'utente si trova in iOS 15.2+ e usa SDK versione 1.4.1-beta.1+, i passaggi di annullamento/avvio del video sono comunque necessari per riavviare audio e video in uscita.

Per iOS 15.4+, audio e video dovrebbero essere in grado di eseguire il ripristino automatico nella maggior parte dei casi. In alcuni casi perimetrali, per annullare l'audio in uscita, l'applicazione deve chiamare un'API per "annullare l'audio" (può essere come risultato dell'azione dell'utente).

iOS con Safari si arresta in modo anomalo e aggiorna la pagina se un utente tenta di passare dalla fotocamera anteriore alla fotocamera posteriore.

Servizi di comunicazione di Azure Calling SDK versione 1.2.3-beta.1 ha introdotto un bug che interessa tutte le chiamate effettuate da iOS Safari. Il problema si verifica quando un utente tenta di spostare il flusso video della fotocamera dall'inizio alla parte posteriore. Il cambio della fotocamera comporta l'arresto anomalo del browser Safari e ricarica la pagina.

Questo problema è stato risolto in Servizi di comunicazione di Azure Calling SDK versione 1.3.1-beta.1 +

  • Versione di iOS Safari: 15.1

Condivisione dello schermo in macOSPartizioni Safari (v16.3 e versioni precedenti)

La condivisione dello schermo non funziona in macOS Cluster Safari(v16.3 e versioni precedenti). Problema noto da Safari e verrà risolto nella versione 16.4+.

L'aggiornamento di una pagina non rimuove immediatamente l'utente dalla chiamata

Se un utente è in una chiamata e decide di aggiornare la pagina, il servizio multimediale di Servizi di comunicazione non rimuove immediatamente l'utente dalla chiamata. Attende che l'utente si ricongiunti. L'utente viene rimosso dalla chiamata dopo il timeout del servizio multimediale.

È consigliabile creare esperienze utente che non richiedono agli utenti finali di aggiornare la pagina dell'applicazione durante una chiamata. Se un utente aggiorna la pagina, riutilizzare lo stesso ID utente di Servizi di comunicazione dopo che l'utente torna all'applicazione. Grazie alla ricongiuzione con lo stesso ID utente, l'utente viene rappresentato come lo stesso oggetto esistente nella remoteParticipants raccolta. Dal punto di vista di altri partecipanti alla chiamata, l'utente rimane nella chiamata durante il tempo necessario per aggiornare la pagina, fino a un minuto o due.

Se l'utente stava inviando video prima dell'aggiornamento, la videoStreams raccolta mantiene le informazioni sul flusso precedenti fino al timeout del servizio e la rimuove. In questo scenario, l'applicazione potrebbe decidere di osservare tutti i nuovi flussi aggiunti alla raccolta ed eseguirne il rendering con il valore più alto id.

Non è possibile eseguire il rendering di più anteprime da più dispositivi sul Web

Questo problema è un limite noto. Per altre informazioni, vedere Panoramica dell'SDK per chiamate.

L'enumerazione dei dispositivi non è possibile in Safari quando l'applicazione viene eseguita in iOS o iPadOS

Le applicazioni non possono enumerare o selezionare dispositivi altoparlanti (ad esempio Bluetooth) in Safari iOS o iPadOS. Questo problema è una limitazione nota di questi sistemi operativi.

Se usi Safari in macOS, l'app non può enumerare o selezionare gli altoparlanti tramite Gestione dispositivi di Servizi di comunicazione. In questo scenario è necessario selezionare i dispositivi tramite il sistema operativo. Se si usa Chrome in macOS, l'app può enumerare o selezionare i dispositivi tramite Gestione dispositivi di Servizi di comunicazione.

  • Versione di iOS Safari: 15.1

Il passaggio ripetuto dei dispositivi video potrebbe causare l'arresto temporaneamente dello streaming video

Il passaggio tra dispositivi video potrebbe causare la sospensione del flusso video mentre il flusso viene acquisito dal dispositivo selezionato. Il passaggio da un dispositivo all'altro può causare spesso una riduzione delle prestazioni. È consigliabile per gli sviluppatori arrestare un flusso di dispositivi prima di avviare un altro.

Il microfono dell'auricolare Bluetooth non viene rilevato o udibile durante la chiamata su Safari in iOS

I visori VR Bluetooth non sono supportati da Safari in iOS. Il dispositivo Bluetooth non è elencato nelle opzioni del microfono disponibili e altri partecipanti non sono in grado di sentirti se provi a usare Bluetooth su Safari.

Questa regressione è una limitazione nota del sistema operativo. Con Safari in macOS e iOS/iPadOS, non è possibile enumerare o selezionare i dispositivi voce tramite Gestione dispositivi di Servizi di comunicazione. Ciò è dovuto al fatto che Safari non supporta l'enumerazione o la selezione di altoparlanti. In questo scenario, usare il sistema operativo per aggiornare la selezione del dispositivo.

La rotazione di un dispositivo può creare una qualità video scarsa

Quando gli utenti ruotano un dispositivo, questo movimento può degradare la qualità del video in streaming.

Questo problema si verifica negli ambienti seguenti:

  • Dispositivi interessati: Google Pixel 5, Google Pixel 3a, Apple iPad 8 e Apple iPad X
  • Libreria client: chiamata (JavaScript)
  • Browser: Safari, Chrome
  • Sistemi operativi: iOS, Android

Il cambio della fotocamera fa bloccare lo schermo

Quando un utente di Servizi di comunicazione partecipa a una chiamata usando JavaScript calling SDK e quindi seleziona il pulsante switch della fotocamera, l'interfaccia utente potrebbe non rispondere. L'utente deve quindi aggiornare l'applicazione o eseguire il push del browser in background.

Questo problema si verifica negli ambienti seguenti:

  • Dispositivi interessati: Google Pixel 4a
  • Libreria client: chiamata (JavaScript)
  • Browser: Chrome
  • Sistemi operativi: iOS, Android

Problema del segnale video quando la chiamata è in stato di connessione

Se un utente attiva e disattiva rapidamente il video mentre la chiamata si trova nello stato Connessione , questa azione potrebbe causare un problema con il flusso acquisito per la chiamata. È consigliabile per gli sviluppatori creare le proprie app in modo che non richieda l'attivazione e la disattivazione del video mentre la chiamata si trova nello stato Connessione . Le prestazioni video ridotte possono verificarsi negli scenari seguenti:

  • Se l'utente inizia con l'audio e quindi avvia e arresta il video, mentre la chiamata si trova nello stato Connessione .
  • Se l'utente inizia con l'audio e quindi avvia e arresta il video, mentre la chiamata è nello stato Lobby .

Enumerazione o accesso ai dispositivi per Safari in macOS e iOS

In alcuni ambienti, è possibile notare che le autorizzazioni del dispositivo vengono reimpostate dopo un certo periodo di tempo. In macOS e iOS Safari non mantiene le autorizzazioni per molto tempo, a meno che non sia stato acquisito un flusso. Il modo più semplice per aggirare questa limitazione consiste nel chiamare l'API DeviceManager.askDevicePermission() , prima di chiamare le API di enumerazione dei dispositivi di Gestione dispositivi. Queste API di enumerazione includono DeviceManager.getCameras(), DeviceManager.getSpeakers()e DeviceManager.getMicrophones(). Se le autorizzazioni sono presenti, l'utente non visualizza nulla. Se le autorizzazioni non sono presenti, all'utente vengono richieste di nuovo le autorizzazioni.

Questo problema si verifica negli ambienti seguenti:

  • Dispositivo interessato: iPhone
  • Libreria client: chiamata (JavaScript)
  • Browser: Safari
  • Sistema operativo: iOS

Ritardo nel rendering dei video dei partecipanti remoti

Durante una chiamata di gruppo in corso, si supponga che l'utente A invii video e quindi che l'utente B unisce la chiamata. A volte, l'utente B non visualizza il video dell'utente A o il video dell'utente A inizia a eseguire il rendering dopo un lungo ritardo. Un problema di configurazione dell'ambiente di rete potrebbe causare questo ritardo. Per altre informazioni, vedere Raccomandazioni di rete.

L'uso di librerie di terze parti durante la chiamata potrebbe causare una perdita di audio

Se si usa getUserMedia separatamente all'interno dell'applicazione, il flusso audio viene perso. Il flusso audio viene perso perché una libreria di terze parti acquisisce l'accesso del dispositivo dalla libreria di Servizi di comunicazione di Azure.

  • Non usare librerie di terze parti che usano l'API getUserMedia internamente durante la chiamata.
  • Se è ancora necessario usare una libreria di terze parti, l'unico modo per recuperare il flusso audio consiste nel modificare il dispositivo selezionato (se l'utente ha più di uno) o riavviare la chiamata.

Questo problema si verifica negli ambienti seguenti:

  • Browser: Safari
  • Sistema operativo: iOS

La causa di questo problema potrebbe essere che l'acquisizione del proprio flusso dallo stesso dispositivo ha un effetto collaterale dell'esecuzione in condizioni di race condition. L'acquisizione di flussi da altri dispositivi potrebbe portare l'utente a una larghezza di banda USB/I/O insufficiente e i skyrocket di sourceUnavailableError frequenza.

L'uso eccessivo di determinate API, ad esempio la disattivazione/disattivazione, comporta la limitazione delle richieste nell'infrastruttura Servizi di comunicazione di Azure

A seguito della chiamata all'API di disattivazione/disattivazione dell'audio, Servizi di comunicazione di Azure infrastruttura informa altri partecipanti nella chiamata sullo stato dell'audio di un partecipante locale che ha richiamato la disattivazione/disattivazione dell'audio, in modo che i partecipanti alla chiamata sappiano chi è disattivato/non modificato. L'uso eccessivo di disattivazione/disattivazione dell'audio è bloccato nell'infrastruttura di Servizi di comunicazione di Azure. La limitazione si verifica se il partecipante (o l'applicazione per conto del partecipante) tenta di disattivare/annullare l'audio in modo continuo, ogni secondo, più di 15 volte in una finestra in sequenza di 30 secondi.

API di automazione delle chiamate

Le limitazioni seguenti sono problemi noti nelle API di automazione delle chiamate di Servizi di comunicazione:

  • L'unica autenticazione attualmente supportata per le applicazioni server consiste nell'usare un stringa di connessione.

  • Effettuare chiamate solo tra entità della stessa risorsa di Servizi di comunicazione. La comunicazione tra risorse è bloccata.

  • Le chiamate tra gli utenti tenant di Microsoft Teams e gli utenti di Servizi di comunicazione o le entità dell'applicazione server non sono consentite.

  • Se un'applicazione effettua la chiamata a due o più identità PSTN e quindi chiude la chiamata, la chiamata tra le altre entità PSTN viene eliminata.

Le sezioni seguenti forniscono informazioni sui problemi noti associati agli SDK per chiamate native e native di Servizi di comunicazione di Azure.

Emulatori di API Android

Quando si usano emulatori di API Android in Android 5.0 (livello API 21) e Android 5.1 (livello API 22), sono previsti alcuni arresti anomali.

Conflitto del modulo Trouter Android

Quando Android Chat and Calling SDK si trovano insieme nella stessa applicazione, la funzionalità di notifiche in tempo reale di Chat SDK non funziona. È possibile che si verifichi un problema di risoluzione delle dipendenze.

Mentre si sta lavorando a una soluzione, è possibile disattivare la funzionalità notifiche in tempo reale aggiungendo le informazioni di dipendenza seguenti nel file build.gradle dell'app ed eseguire invece il polling dell'API GetMessages per visualizzare i messaggi in arrivo agli utenti.

Java

 implementation ("com.azure.android:azure-communication-chat:1.0.0") {
     exclude group: 'com.microsoft', module: 'trouter-client-android'
 }
 implementation 'com.azure.android:azure-communication-calling:1.0.0'

Nota: se l'applicazione tenta di toccare una qualsiasi delle API di notifica come chatAsyncClient.startRealtimeNotifications() o chatAsyncClient.addEventHandler(), genera un errore di runtime.

Dimensioni pagina Android

La funzionalità dimensioni pagina 16 KB, disponibile a partire da Android 15, non è attualmente supportata.

iOS che risponde alla chiamata in arrivo tramite CallKit

Le impostazioni audio in uscita non vengono applicate quando CallKit è abilitato e gli utenti rispondono direttamente alle chiamate in arrivo tramite CallKit.

Libreria dell'interfaccia utente

È possibile seguire la pagina wiki dei problemi noti nei repository GitHub.