Problemas conhecidos nos SDKs e APIs
Estes artigos fornecem informações sobre limitações e problemas conhecidos relacionados aos SDKs de Chamada dos Serviços de Comunicação do Azure e APIs de Automação de Chamadas dos Serviços de Comunicação.
Importante
Existem vários fatores que podem afetar a qualidade da sua experiência de chamada. Para saber mais sobre a configuração de rede dos Serviços de Comunicação e as práticas recomendadas de teste, consulte Recomendações de rede.
Chamando o SDK da Web
As seções a seguir fornecem informações sobre problemas conhecidos associados aos SDKs de chamadas de vídeo e voz JavaScript dos Serviços de Comunicação do Azure.
Chrome M115 - regressão
A versão 115 do Chrome para Android introduziu uma regressão ao fazer chamadas de vídeo - o resultado desse bug é um usuário fazendo uma chamada nos Serviços de Comunicação do Azure com esta versão do Chrome não tem vídeo de saída em chamadas de Grupo e Serviços de Comunicação do Azure-Microsoft Teams.
- Esta regressão é um problema conhecido introduzido no Chromium
- Como atenuação de curto prazo, instrua os usuários a usar o Microsoft Edge ou o Firefox no Android ou evitar o uso do Google Chrome 115/116 no Android
Problemas conhecidos do Firefox
O suporte do navegador Firefox para desktop já está disponível em visualização pública. Os problemas conhecidos são:
- A enumeração de alto-falantes não está disponível: se você estiver usando o Firefox, seu aplicativo não poderá enumerar ou selecionar alto-falantes por meio do gerenciador de dispositivos dos Serviços de Comunicação. Nesse cenário, você deve selecionar dispositivos através do sistema operacional.
- Atualmente, as câmeras virtuais não são suportadas ao fazer chamadas de áudio/vídeo na área de trabalho do Firefox.
Problemas conhecidos do iOS Chrome
O suporte do navegador iOS Chrome está agora disponível em pré-visualização pública. Os problemas conhecidos são:
- Sem áudio de entrada e saída ao mudar o navegador para segundo plano ou bloquear o dispositivo. Esse problema foi corrigido na versão 16.4+ do iOS.
- Nenhum áudio de entrada / saída vindo do fone de ouvido bluetooth. Quando um usuário conecta fone de ouvido bluetooth no meio da chamada dos Serviços de Comunicação do Azure, o áudio ainda sai do alto-falante até que o usuário bloqueie e desbloqueie o telefone. Vimos esse problema em versões mais antigas do iOS (15.6, 15.7), e não é reproduzível no iOS 16.
O Safari do iOS apresenta um tamanho de resolução incorreto da pré-visualização da câmara
Este bug ocorre nas versões do iOS 16.7 ou iOS 17 anteriores à 17.4 quando os utilizadores rodam os seus telefones ou ativam/desativam vídeo durante a chamada. A visualização da câmera exibe brevemente um tamanho de resolução incorreto antes de voltar ao normal. O problema não é reproduzível no iOS 17.4 Beta. Bug WebKit relacionado aqui.
O iOS 16 introduziu bugs ao colocar o navegador em segundo plano durante uma chamada
A versão do iOS 16 introduziu um bug que pode parar a chamada de áudio/vídeo dos Serviços de Comunicação do Azure ao usar o navegador móvel Safari. A Apple está ciente deste problema e está à procura de uma correção do seu lado. O impacto pode ser que uma chamada dos Serviços de Comunicação do Azure possa parar de funcionar durante uma chamada e a única resolução para fazê-la funcionar novamente é fazer com que o cliente final reinicie o telefone.
Para reproduzir este bug:
- Ter um utilizador a utilizar um iPhone com iOS 16
- Aderir a chamadas dos Serviços de Comunicação do Azure (apenas com áudio ou com áudio e vídeo) utilizando o navegador móvel Safari iOS
- Se, durante uma chamada, alguém colocar o navegador Safari em segundo plano e visualizar o YouTube OU receber uma chamada FaceTime\phone enquanto estiver ligado através de um dispositivo Bluetooth
Resultados:
- Após alguns minutos dessa situação, o vídeo de entrada e saída pode parar de funcionar.
- A única maneira de fazer com que as chamadas dos Serviços de Comunicação do Azure voltem a funcionar é fazer com que o usuário final reinicie o telefone.
Chrome M98 - regressão
A versão 98 do Chrome introduziu uma regressão com geração anormal de quadros-chave de vídeo que afeta negativamente a resolução de um fluxo de vídeo enviado para a maioria (70% +) dos usuários.
- Esta regressão é um problema conhecido introduzido no Chromium
Durante uma chamada PSTN, o usuário ainda pode ouvir o áudio da chamada ACS
Esse problema acontece quando um usuário do Android Chrome recebe uma chamada PSTN Depois de atender a chamada PSTN, o microfone na chamada ACS fica mudo. O áudio de saída da chamada ACS é silenciado, portanto, outros participantes não podem ouvir o usuário que é a chamada PSTN. Vale a pena notar que o áudio de entrada do usuário não é silenciado, e esse comportamento é inerente ao navegador.
Nenhum áudio recebido durante uma chamada
Ocasionalmente, um usuário em uma chamada dos Serviços de Comunicação do Azure pode não conseguir ouvir o áudio de participantes remotos. Há um bug relacionado ao Chromium que causa esse problema, o problema pode ser atenuado reconectando o PeerConnection. Adicionamos essa solução alternativa desde o SDK 1.9.1 (estável) e o SDK 1.10.0 (beta).
No Android Chrome, se um usuário ingressar na chamada dos Serviços de Comunicação do Azure várias vezes, o áudio de entrada também poderá desaparecer. O usuário não consegue ouvir o áudio de outros participantes até que a página seja atualizada. Corrigimos esse problema no SDK 1.10.1-beta.1 e melhoramos o uso de recursos de áudio.
Alguns dispositivos Android falham em cenários de chamadas, exceto chamadas em grupo.
Muitos dispositivos Android específicos não conseguem iniciar, aceitar chamadas e reuniões. Os dispositivos que enfrentam esse problema, não podem se recuperar e falham em todas as tentativas. Estes são principalmente dispositivos Samsung modelo A, particularmente os modelos A326U, A125U e A215U.
- Esta regressão é um problema conhecido introduzido no Chromium.
O Android Chrome silencia a chamada depois que o navegador vai para segundo plano por um minuto
No Android Chrome, se um usuário estiver em uma chamada dos Serviços de Comunicação do Azure e colocar o navegador em segundo plano por um minuto. O microfone perde o acesso e os outros participantes da chamada não conseguem ouvir o áudio do usuário. Uma vez que o usuário traz o navegador para o primeiro plano, o microfone está disponível novamente. Bugs relacionados ao cromo aqui e aqui
Um usuário de celular (iOS e Android) desistiu da chamada, mas ainda está aparecendo na lista de participantes.
O problema pode ocorrer se um usuário móvel sair da chamada de grupo dos Serviços de Comunicação do Azure sem usar a API Call.hangUp(). Quando um usuário móvel fecha o navegador ou atualiza a página da Web sem desligar, outros participantes da chamada em grupo ainda podem ver esse usuário móvel na lista de participantes por cerca de 60 segundos.
O Safari do iOS atualiza a página se o usuário for para outro aplicativo e retornar ao navegador
O problema pode ocorrer se um usuário em um Azure Communication Services ligar com o Safari do iOS e alternar para outro aplicativo por um tempo. Depois que o usuário retornar ao navegador, a página do navegador poderá ser atualizada. Isso ocorre porque o sistema operacional mata o navegador. Uma maneira de mitigar esse problema é manter alguns estados e recuperar após atualizações de página.
Usuários do iOS 15.1 participando de chamadas em grupo ou reuniões do Microsoft Teams.
- Às vezes, quando a PSTN de entrada é recebida, a guia com a chamada ou reunião trava. Bugs relacionados do WebKit aqui e aqui.
O microfone/câmara local silencia quando ocorrem determinadas interrupções no iOS Safari e no Android Chrome.
Esse problema pode ocorrer se outro aplicativo ou o sistema operacional assume o controle do microfone ou da câmera. Aqui estão alguns exemplos que podem acontecer enquanto um usuário está na chamada:
- Uma chamada recebida chega via PSTN (Public Switched Telephone Network) e captura o acesso ao dispositivo de microfone.
- Um utilizador reproduz um vídeo do YouTube, por exemplo, ou inicia uma chamada FaceTime. Mudar para outro aplicativo nativo pode capturar o acesso ao microfone ou à câmera.
- Um usuário habilita a Siri, que captura o acesso ao microfone.
No iOS, por exemplo, durante uma chamada dos Serviços de Comunicação do Azure, se uma chamada PSTN entrar, um UFD microfoneMutedUnexepectedly bad será gerado e o áudio parará de fluir na chamada dos Serviços de Comunicação do Azure e a chamada será marcada como silenciada. Quando a chamada PSTN terminar, o usuário terá que desativar o mudo da chamada dos Serviços de Comunicação do Azure para que o áudio comece a fluir novamente na chamada dos Serviços de Comunicação do Azure. No caso do Android Chrome quando uma chamada PSTN chega, o áudio para de fluir na chamada dos Serviços de Comunicação do Azure e a chamada dos Serviços de Comunicação do Azure não é marcada como silenciada. Neste caso, não há microfoneMutedUnexepectedly UFD evento. Quando a chamada PSTN é concluída, o Android Chrome recupera o áudio automaticamente e o áudio começa a fluir normalmente novamente na chamada dos Serviços de Comunicação do Azure.
Caso a câmera esteja ligada e ocorra uma interrupção, a chamada dos Serviços de Comunicação do Azure pode ou não perder a câmera. Se perdido, em seguida, a câmera é marcada como desligada e o usuário tem que ir ligá-lo novamente após a interrupção liberou a câmera.
Ocasionalmente, os dispositivos de microfone ou câmera não são liberados a tempo, e isso pode causar problemas com a chamada original. Por exemplo, se o usuário tentar desativar o mudo enquanto assiste a um vídeo do YouTube ou se uma chamada PSTN estiver ativa simultaneamente.
Os fluxos de vídeo de entrada não param de renderizar se o usuário estiver no iOS 15.2+ e estiver usando o SDK versão 1.4.1-beta.1+, as etapas de desativação/início de vídeo ainda serão necessárias para reiniciar o áudio e o vídeo de saída.
Para o iOS 15.4+, áudio e vídeo devem ser capazes de recuperar automaticamente na maioria dos casos. Em alguns casos de borda, para desativar o som, o aplicativo deve chamar uma API para 'unmute' (pode ser como resultado da ação do usuário) para recuperar o áudio de saída.
O iOS com Safari falha e atualiza a página se um utilizador tentar mudar da câmara frontal para a câmara traseira.
O SDK de Chamada dos Serviços de Comunicação do Azure versão 1.2.3-beta.1 introduziu um bug que afeta todas as chamadas feitas a partir do Safari do iOS. O problema ocorre quando um usuário tenta alternar o fluxo de vídeo da câmera de frente para trás. Mudar de câmara resulta no navegador Safari para falhar e recarregar a página.
Esse problema foi corrigido no SDK de Chamada dos Serviços de Comunicação do Azure versão 1.3.1-beta.1 +
- Versão do iOS Safari: 15.1
Partilha de ecrã no macOS Ventura Safari (v16.3 e inferior)
A partilha de ecrã não funciona no macOS Ventura Safari (v16.3 e inferior). Problema conhecido do Safari e será corrigido na v16.4+.
Atualizar uma página não remove imediatamente o usuário da chamada
Se um usuário estiver em uma chamada e decidir atualizar a página, o serviço de mídia dos Serviços de Comunicação não removerá esse usuário imediatamente da chamada. Aguarda que o utilizador volte a aderir. O usuário é removido da chamada depois que o serviço de mídia expira.
É melhor criar experiências de usuário que não exijam que os usuários finais atualizem a página do seu aplicativo durante uma chamada. Se um usuário atualizar a página, reutilize o mesmo ID de usuário dos Serviços de Comunicação depois que esse usuário retornar ao aplicativo. Ao se juntar novamente com o mesmo ID de usuário, o usuário é representado como o mesmo objeto existente na remoteParticipants
coleção. Do ponto de vista de outros participantes da chamada, o usuário permanece na chamada durante o tempo que leva para atualizar a página, até um minuto ou dois.
Se o usuário estava enviando vídeo antes de atualizar, a videoStreams
coleção mantém as informações de fluxo anteriores até que o serviço atinja o tempo limite e as remova. Nesse cenário, o aplicativo pode decidir observar quaisquer novos fluxos adicionados à coleção e renderizar um com o maior id
.
Não é possível renderizar várias visualizações de vários dispositivos na Web
Este problema é uma limitação conhecida. Para obter mais informações, consulte Visão geral do SDK de chamada.
Não é possível enumerar dispositivos no Safari quando a aplicação é executada no iOS ou iPadOS
As aplicações não podem enumerar ou selecionar dispositivos de altifalantes (como Bluetooth) no Safari iOS ou iPadOS. Esse problema é uma limitação conhecida desses sistemas operacionais.
Se estiver a utilizar o Safari no macOS, a sua aplicação não pode enumerar ou selecionar altifalantes através do gestor de dispositivos dos Serviços de Comunicação. Nesse cenário, você deve selecionar dispositivos através do sistema operacional. Se utilizar o Chrome no macOS, a aplicação pode enumerar ou selecionar dispositivos através do gestor de dispositivos dos Serviços de Comunicação.
- Versão do iOS Safari: 15.1
A troca repetida de dispositivos de vídeo pode fazer com que o streaming de vídeo pare temporariamente
Alternar entre dispositivos de vídeo pode fazer com que o fluxo de vídeo pause enquanto o fluxo é adquirido do dispositivo selecionado. Alternar entre dispositivos com frequência pode causar degradação do desempenho. É melhor para os desenvolvedores parar um fluxo de dispositivos antes de iniciar outro.
O microfone do auricular Bluetooth não é detetado ou audível durante a chamada no Safari no iOS
Os auriculares Bluetooth não são suportados pelo Safari no iOS. O seu dispositivo Bluetooth não está listado nas opções de microfone disponíveis e os outros participantes não conseguem ouvi-lo se tentar utilizar Bluetooth através do Safari.
Essa regressão é uma limitação conhecida do sistema operacional. Com o Safari no macOS e iOS/iPadOS, não é possível enumerar ou selecionar dispositivos de alto-falante por meio do gerenciador de dispositivos dos Serviços de Comunicação. Isso ocorre porque o Safari não suporta a enumeração ou seleção de alto-falantes. Nesse cenário, use o sistema operacional para atualizar sua seleção de dispositivo.
A rotação de um dispositivo pode criar má qualidade de vídeo
Quando os usuários giram um dispositivo, esse movimento pode degradar a qualidade do vídeo que está sendo transmitido.
Esse problema ocorre nos seguintes ambientes:
- Dispositivos afetados: Google Pixel 5, Google Pixel 3a, Apple iPad 8 e Apple iPad X
- Biblioteca do cliente: Chamando (JavaScript)
- Navegadores: Safari, Chrome
- Sistemas operacionais: iOS, Android
A comutação da câmara faz com que o ecrã congele
Quando um usuário dos Serviços de Comunicação ingressa em uma chamada usando o SDK de chamada JavaScript e, em seguida, seleciona o botão de comutador da câmera, a interface do usuário pode parar de responder. O usuário deve então atualizar o aplicativo ou empurrar o navegador para o plano de fundo.
Esse problema ocorre nos seguintes ambientes:
- Dispositivos afetados: Google Pixel 4a
- Biblioteca do cliente: Chamando (JavaScript)
- Navegador: Chrome
- Sistemas operacionais: iOS, Android
Problema de sinal de vídeo quando a chamada está no estado de conexão
Se um usuário ligar e desligar o vídeo rapidamente enquanto a chamada estiver no estado de conexão , essa ação pode levar a um problema com o fluxo adquirido para a chamada. É melhor que os desenvolvedores criem seus aplicativos de uma forma que não exija que o vídeo seja ativado e desativado enquanto a chamada estiver no estado de conexão . O desempenho de vídeo degradado pode ocorrer nos seguintes cenários:
- Se o usuário começar com áudio e, em seguida, iniciar e parar o vídeo, enquanto a chamada estiver no estado de conexão .
- Se o usuário começar com áudio e, em seguida, iniciar e parar o vídeo, enquanto a chamada estiver no estado Lobby .
Enumerar ou aceder a dispositivos para o Safari no macOS e iOS
Em determinados ambientes, você pode notar que as permissões do dispositivo são redefinidas após algum período de tempo. No macOS e iOS, o Safari não mantém as permissões por muito tempo, a menos que haja um fluxo adquirido. A maneira mais simples de contornar essa limitação é chamar a DeviceManager.askDevicePermission()
API, antes de chamar as APIs de enumeração de dispositivo do gerenciador de dispositivos. Essas APIs de enumeração incluem DeviceManager.getCameras()
, DeviceManager.getSpeakers()
e DeviceManager.getMicrophones()
. Se as permissões estiverem lá, o usuário não verá nada. Se as permissões não estiverem lá, o usuário será solicitado a fornecer as permissões novamente.
Esse problema ocorre nos seguintes ambientes:
- Dispositivo afetado: iPhone
- Biblioteca do cliente: Chamando (JavaScript)
- Navegador: Safari
- Sistema operacional: iOS
Atraso na renderização de vídeos de participantes remotos
Durante uma chamada de grupo em andamento, suponha que o Usuário A envia vídeo e, em seguida , o Usuário B ingressa na chamada. Às vezes, o usuário B não vê o vídeo do usuário A ou o vídeo do usuário A começa a ser renderizado após um longo atraso. Um problema de configuração do ambiente de rede pode causar esse atraso. Para obter mais informações, consulte Recomendações de rede.
Usar bibliotecas de terceiros durante a chamada pode resultar em perda de áudio
Se você usar getUserMedia
separadamente dentro do aplicativo, o fluxo de áudio será perdido. O fluxo de áudio é perdido porque uma biblioteca de terceiros assume o acesso ao dispositivo a partir da biblioteca dos Serviços de Comunicação do Azure.
- Não use bibliotecas de terceiros que estejam usando a
getUserMedia
API internamente durante a chamada. - Se você ainda precisar usar uma biblioteca de terceiros, a única maneira de recuperar o fluxo de áudio é alterar o dispositivo selecionado (se o usuário tiver mais de um) ou reiniciar a chamada.
Esse problema ocorre nos seguintes ambientes:
- Navegador: Safari
- Sistema operacional: iOS
A causa desse problema pode ser que adquirir seu próprio fluxo do mesmo dispositivo tem um efeito colateral de correr em condições de corrida. Adquirir fluxos de outros dispositivos pode levar o usuário a largura de banda USB/IO insuficiente, e a sourceUnavailableError
taxa dispara.
O uso excessivo de determinadas APIs, como mute/unmute, resulta em limitação na infraestrutura dos Serviços de Comunicação do Azure
Como resultado da chamada de API mute/unmute, a infraestrutura dos Serviços de Comunicação do Azure informa outros participantes na chamada sobre o estado do áudio de um participante local que invocou mute/unmute, para que os participantes da chamada saibam quem está mudo/sem som. O uso excessivo de mudo/unmute é bloqueado na infraestrutura dos Serviços de Comunicação do Azure. A limitação acontece se o participante (ou a aplicação em nome do participante) tentar silenciar/desativar o som continuamente, a cada segundo, mais de 15 vezes numa janela rolante de 30 segundos.
APIs de automação de chamadas
As limitações a seguir são problemas conhecidos nas APIs de Automação de Chamadas dos Serviços de Comunicação:
A única autenticação atualmente suportada para aplicativos de servidor é usar uma cadeia de conexão.
Faça chamadas apenas entre entidades do mesmo recurso de Serviços de Comunicação. A comunicação entre recursos está bloqueada.
Não são permitidas chamadas entre utilizadores inquilinos do Microsoft Teams e utilizadores dos Serviços de Comunicação ou entidades de aplicações de servidor.
Se um aplicativo discar para duas ou mais identidades PSTN e, em seguida, encerrar a chamada, a chamada entre as outras entidades PSTN cairá.
As seções a seguir fornecem informações sobre problemas conhecidos associados aos SDKs de interface do usuário nativos e nativos dos Serviços de Comunicação do Azure.
Emuladores de API Android
Ao utilizar emuladores de API do Android no Android 5.0 (nível de API 21) e Android 5.1 (nível de API 22), algumas falhas são esperadas.
Conflito do módulo Android Trouter
Quando o Android Chat e o Calling SDK estão juntos no mesmo aplicativo, o recurso de notificações em tempo real do Chat SDK não funciona. Você pode obter um problema de resolução de dependência.
Enquanto estamos trabalhando em uma solução, você pode desativar o recurso de notificações em tempo real adicionando as seguintes informações de dependência no arquivo build.gradle do aplicativo e, em vez disso, pesquisar a API GetMessages para exibir mensagens de entrada para os usuários.
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 o aplicativo tentar tocar em qualquer uma das APIs de notificação como chatAsyncClient.startRealtimeNotifications()
ou chatAsyncClient.addEventHandler()
, resultará em um erro de tempo de execução.
Tamanho da página do Android
O recurso de tamanho de página de 16 KB, disponível desde o Android 15, não é suportado no momento.
iOS atendendo chamadas recebidas via CallKit
As configurações de áudio de saída não se aplicam quando o CallKit está ativado e os usuários atendem as chamadas recebidas diretamente por meio do CallKit.
Biblioteca da interface do usuário
Você pode seguir a página wiki de problemas conhecidos nos repositórios do GitHub.