Compartilhar via


Problemas conhecidos nos SDKs e APIs

Esse artigo fornece informações sobre as limitações e os problemas conhecidos relacionados aos SDKs de chamada dos Serviços de Comunicação do Azure e das APIs de Automação de chamadas dos Serviços de Comunicação.

Importante

Há vários fatores que podem afetar a qualidade da sua experiência de chamada. Para saber mais sobre as práticas recomendadas de configuração e teste de rede dos Serviços de Comunicação, consulte Recomendações de rede.

Chamada do SDK da Web

As seções a seguir fornecem informações sobre problemas conhecidos associados aos SDKs de chamadas de voz e vídeo em JavaScript dos Serviços de Comunicação do Azure.

Chrome M115 – regressão

O Chrome versão 115 para Android introduziu uma regressão ao fazer chamadas de vídeo. O resultado desse bug é que um usuário que faz uma chamada nos Serviços de Comunicação do Azure com essa versão do Chrome não tem nenhum vídeo de saída em chamadas de Grupo e dos Serviços de Comunicação do Azure-Microsoft Teams.

  • Essa regressão é um problema conhecido introduzido no Chromium
  • Como mitigação de curto prazo, instrua os usuários a usar o Microsoft Edge ou o Firefox no Android ou evite usar o Google Chrome 115/116 no Android

Problemas conhecidos do Firefox

O suporte ao navegador da área de trabalho do Firefox agora está disponível em versão prévia pública. Os problemas conhecidos são:

  • A enumeração de alto-falantes não está disponível: Se você estiver usando o Firefox, o aplicativo não poderá enumerar nem selecionar alto-falantes por meio do gerenciador de dispositivos dos Serviços de Comunicação. Nesse cenário, você deve selecionar dispositivos por meio do sistema operacional.
  • Atualmente, não há suporte para câmeras virtuais ao fazer chamadas de áudio/vídeo da área de trabalho do Firefox.

Problemas conhecidos do Chrome do iOS

O suporte ao navegador da área de trabalho do Chrome do iOS agora está disponível em versão prévia pública. Os problemas conhecidos são:

  • Nenhum áudio de saída e de entrada ao alternar o navegador para o plano de fundo ou bloquear o dispositivo. Esse problema foi corrigido no iOS versão 16.4+.
  • Nenhum áudio de entrada/saída proveniente do fone de ouvido bluetooth. Quando um usuário conecta o headset 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 iOS Safari exibe um tamanho de resolução incorreto da visualização da câmera

Esse bug ocorre em versões do iOS 16.7 ou iOS 17 anteriores à 17.4 quando os usuários giram seus telefones ou habilitam/desabilitam o 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 do 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 interromper 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 desse problema e está procurando uma correção. O impacto pode ser que uma chamada do Serviços de Comunicação do Azure pode parar de funcionar enquanto está acontecendo e a única resolução para fazê-la funcionar novamente é pedir que o cliente final reinicie o telefone.

Para reproduzir este bug:

  • Peça que um usuário use um iPhone executando o iOS 16
  • Ingressar na chamada dos Serviços de Comunicação do Azure (somente com áudio ou com áudio e vídeo) usando o navegador móvel Safari iOS
  • Se durante uma chamada alguém colocar o navegador Safari em segundo plano e exibir o YouTube OU receber uma chamada do FaceTime ou de telefone enquanto estiver conectado por meio 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 a chamada dos Serviços de Comunicação do Azure funcione novamente é fazer com que o usuário final reinicie o telefone.

Chrome M98 – Regressão

O Chrome versão 98 introduziu uma regressão com a geração anormal de quadros-chave de vídeo que impacta negativamente a resolução de um fluxo de vídeo enviado para a maioria (mais de 70%) dos usuários.

  • Essa regressão é um problema conhecido introduzido no Chromium

Durante uma chamada PSTN, o usuário ainda pode ouvir áudio da chamada do ACS

Esse problema acontece quando um usuário do Android Chrome recebe uma chamada PSTN de entrada depois de atender à chamada PSTN, o microfone na chamada do ACS fica mudo. O áudio de saída da chamada do ACS é mudo, para que outros participantes não possam ouvir o usuário que é a chamada PSTN. Vale a pena observar que o áudio de entrada do usuário não está mudo e esse comportamento é inerente ao navegador.

Nenhum áudio de entrada 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 do Chromium que causa esse problema, o problema pode ser mitigado 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 várias vezes na chamada dos Serviços de Comunicação do Azure, o áudio de entrada também poderá desaparecer. O usuário não poderá 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 do recurso de áudio.

Alguns dispositivos Android falham em cenários de chamada, exceto para chamadas de grupo.

Uma série de dispositivos Android específicos falha ao iniciar ou aceitar chamadas e reuniões. Os dispositivos que têm esse problema não podem se recuperar e falham em todas as tentativas. Em grande parte, são os dispositivos do modelo A da Samsung, especialmente os modelos A326U, A125U e A215U.

  • Essa regressão é um problema conhecido introduzido no Chromium.

O Android Chrome silencia a chamada após o navegador ficar em 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 podem ouvir o áudio do usuário. Depois que o usuário colocar o navegador em primeiro plano, o microfone estará disponível novamente. Bugs do Chromium relacionados aqui e aqui

Um usuário móvel (iOS e Android) encerrou a chamada, mas ainda está aparecendo na lista de participantes.

O problema poderá 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 de grupo ainda podem ver esse usuário móvel na lista de participantes por cerca de 60 segundos.

O iOS Safari 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 uma chamada dos Serviços de Comunicação do Azure com o iOS Safari 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 atenuar esse problema é manter alguns estados e recuperar após a atualização da página.

Usuários do iOS 15.1 que participam 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 do WebKit relacionados aqui e aqui.

O microfone/a câmera local ficam mudos quando determinadas interrupções ocorrem no Safari do iOS e no Chrome do Android.

Esse problema poderá ocorrer se outro aplicativo ou o sistema operacional assumir 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 de entrada chega por meio de PSTN (Rede Telefônica Comutado Pública) e captura o acesso ao dispositivo de microfone.
  • Um usuário reproduz um vídeo do YouTube, por exemplo, ou inicia uma chamada FaceTime. Alternar 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 chegar, uma UFD com microfoneMutedUnexepectedly ruim será gerada e o áudio parará de fluir na chamada dos Serviços de Comunicação do Azure e a chamada será marcada como silenciada. Depois que a chamada PSTN terminar, o usuário precisará desativar a 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. Nesse caso, não há nenhum evento UFD microphoneMutedUnexepectedly. Depois que a chamada PSTN for concluída, o Android Chrome recuperará o áudio automaticamente e o áudio começará a fluir normalmente novamente na chamada dos Serviços de Comunicação do Azure.

Caso a câmera esteja ativada 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, a câmera será marcada como desativada e o usuário precisará ativá-la novamente depois que a interrupção liberou a câmera.

Ocasionalmente, os dispositivos de microfone ou câmera não serão liberados a tempo e isso pode causar problemas com a chamada original. Por exemplo, se o usuário tentar ativar o som ao assistir a um vídeo do YouTube ou se uma chamada PSTN estiver ativa simultaneamente.

A renderização dos fluxos de vídeo de entrada não será interrompida se o usuário estiver no iOS 15.2+ e estiver usando o SDK versão 1.4.1-beta.1+. As etapas de desativar mudo/iniciar 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 conseguir se recuperar automaticamente na maioria dos casos. Em alguns casos de borda, para desativar o mudo, uma API para "desativar o mudo" deve ser chamada pelo aplicativo (pode ser resultado da ação do usuário) para recuperar o áudio de saída.

O iOS com o Safari falha e atualiza a página se um usuário tenta mudar da câmera frontal para a câmera 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 do Safari do iOS. O problema ocorre quando um usuário tenta mudar o streaming de vídeo da câmera frontal para a traseira. A mudança da câmera faz com que o navegador Safari falhe e recarregue a página.

Esse problema é corrigido no SDK de chamada dos Serviços de Comunicação do Azure versão 1.3.1-beta.1 +

  • Versão do Safari do iOS: 15.1

Compartilhamento de tela no macOS Ventura Safari (v16.3 e inferior)

O compartilhamento de tela não funciona no macOS Ventura Safari (v16.3 e inferior). Problema conhecido do Safari e será corrigido na v16.4+.

A atualização de 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. Ele aguarda que o usuário retome. O usuário será removido da chamada depois que o serviço de mídia atingir o tempo limite.

É melhor criar experiências do usuário que não exijam que os usuários finais atualizem a página do aplicativo durante uma chamada. Se um usuário atualizar a página, reutilize a mesma ID de usuário dos Serviços de Comunicação depois que o usuário retornar ao aplicativo. Ao reingressar com a mesma ID de usuário, o usuário é representado como o mesmo objeto existente na coleção remoteParticipants. Da perspectiva de outros participantes na chamada, o usuário permanece na chamada durante o tempo necessário para atualizar a página, até um minuto ou dois.

Se o usuário estava enviando vídeo antes de atualizar, a coleção videoStreams mantém as informações de fluxo anteriores até que o serviço expire e a 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

Esse problema é uma limitação conhecida. Para obter mais informações, confira Visão geral do SDK de chamada.

A enumeração de dispositivos não é possível no Safari quando o aplicativo é executado no iOS ou no iPadOS

Os aplicativos não podem enumerar nem selecionar dispositivos de alto-falante (como Bluetooth) no Safari iOS ou iPad. Essa é uma limitação conhecida desses sistemas operacionais.

Se você estiver usando o Safari no macOS, o aplicativo não poderá enumerar nem selecionar alto-falantes por meio do gerenciador de dispositivos dos Serviços de Comunicação. Nesse cenário, você deve selecionar dispositivos por meio do sistema operacional. Se você usar o Chrome no macOS, o aplicativo poderá enumerar ou selecionar dispositivos por meio do gerenciador de dispositivos dos Serviços de Comunicação.

  • Versão do Safari do iOS: 15.1

Alternar repetidamente 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 de desempenho. É melhor para os desenvolvedores interromper um fluxo de dispositivo antes de iniciar outro.

O microfone do headset Bluetooth não é detectado ou audível durante a chamada no Safari no iOS

Não há suporte para headsets Bluetooth no Safari no iOS. Seu dispositivo Bluetooth não será listado nas opções de microfone disponíveis e os outros participantes não poderão ouvir você usando o Bluetooth no Safari.

Essa regressão é uma limitação conhecida do sistema operacional. Com o Safari no macOS e iOS/iPadOS, não é possível enumerar nem selecionar dispositivos de alto-falante por meio do gerenciador de dispositivos dos Serviços de Comunicação. Isso porque o Safari não dá suporte à enumeração ou à seleção de alto-falantes. Nesse cenário, use o sistema operacional para atualizar a seleção do dispositivo.

A rotação de um dispositivo pode criar qualidade de vídeo ruim

Quando os usuários giram um dispositivo, esse movimento pode prejudicar a qualidade do vídeo que está transmitindo.

Esse problema ocorre nos seguintes ambientes:

  • Dispositivos afetados: Google pixel 5, Google pixel 3A, Apple iPad 8 e Apple iPad X
  • Biblioteca de clientes: Chamando (JavaScript)
  • Navegadores: Safari, Chrome
  • Sistema operacional: iOS, Android

A alternância de câmera faz o congelamento da tela

Quando um usuário dos Serviços de Comunicação ingressa em uma chamada usando o SDK de chamada do JavaScript e, em seguida, seleciona o botão de opção da câmera, a interface do usuário pode ficar sem resposta. Em seguida, o usuário deve atualizar o aplicativo ou efetuar push do navegador para o segundo plano.

Esse problema ocorre nos seguintes ambientes:

  • Dispositivos afetados: Google pixel 4a
  • Biblioteca de clientes: Chamando (JavaScript)
  • Navegador: Chrome
  • Sistema operacional: 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 Conectando, isso poderá levar a um problema com o fluxo adquirido para a chamada. É melhor para os desenvolvedores criarem seus aplicativos de uma maneira que não exija que o vídeo seja ativado ou desativado enquanto a chamada estiver no estado Conectando. O desempenho de vídeo degradado pode ocorrer nos seguintes cenários:

  • Se o usuário iniciar com áudio e, em seguida, iniciar e parar o vídeo, enquanto a chamada estiver no estado Conectando.
  • Se o usuário iniciar com áudio e, em seguida, iniciar e parar o vídeo, enquanto a chamada estiver no estado Lobby.

Enumerando ou acessando dispositivos para Safari no macOS e iOS

Em determinados ambientes, é possível observar que as permissões de dispositivo são redefinidas após algum período de tempo. No macOS e no iOS, o Safari não mantém permissões por muito tempo, a menos que haja um fluxo adquirido. A maneira mais simples de resolver isso é chamar a API DeviceManager.askDevicePermission() 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 presentes, o usuário não verá nada. Se as permissões não estiverem presentes, o usuário será solicitado a fornecer as permissões novamente.

Esse problema ocorre nos seguintes ambientes:

  • Dispositivos afetados: iPhone
  • Biblioteca de clientes: 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 um vídeo e, em seguida, o Usuário B se junta à 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 renderizar após um longo atraso. Um problema de configuração de ambiente de rede pode causar esse atraso. Para obter mais informações, consulte Recomendações de rede.

O uso de 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. Isso ocorre porque uma biblioteca de terceiros assume o acesso ao dispositivo da biblioteca dos Serviços de Comunicação do Azure.

  • Não use bibliotecas de terceiros que estejam usando a API getUserMedia 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 deste problema pode ser que adquirir seu próprio fluxo do mesmo dispositivo terá um efeito colateral de executar em condições de corrida. A aquisição de fluxos de outros dispositivos pode levar o usuário a uma largura de banda USB/E/S insuficiente e a taxa sourceUnavailableError aumentará demais.

O uso excessivo de determinadas APIs, como mudo/desativação, 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 a outros participantes da chamada sobre o estado do áudio de um participante local que invocou mudo/desativação, para que os participantes da chamada saibam quem está mudo/desativado. O uso excessivo de mudo/desativação é bloqueado na infraestrutura dos Serviços de Comunicação do Azure. A limitação ocorre se o participante (ou o aplicativo em nome do participante) tentar ativar/desativar o mudo continuamente, a cada segundo, mais de 15 vezes em uma janela sem interrupção de 30 segundos.

APIs de automação de chamada

Os seguintes são problemas conhecidos nas APIs de Automação de chamada dos Serviços de Comunicação do Azure:

  • A única autenticação atualmente suportada para aplicativos de servidor é usar uma cadeia de conexão.

  • Faça chamadas somente 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 usuários locatários de Microsoft Teams e de usuários de Serviços de Comunicação ou entidades de aplicativo de servidor.

  • Se um aplicativo discar para duas ou mais identidades de PSTN e encerrar a chamada, a chamada entre as outras entidades de PSTN é removida.

As seções a seguir fornecem informações sobre problemas conhecidos associados aos SDKs nativos da chamada e nativos da interface do usuário dos Serviços de Comunicação do Azure.

Emuladores de API do Android

Ao utilizar emuladores de API do Android no Android 5.0 (API nível 21) e Android 5.1 (API nível 22), são esperadas algumas falhas.

Conflito de módulo do Android Trouter

Durante o uso conjunto do SDK de Chat e de Chamada do Android no mesmo aplicativo, o recurso de notificações em tempo real do SDK de Chat não funciona. Você poderá receber um problema de resolução de dependência.

Enquanto trabalhamos em uma solução, desative o recurso de notificações em tempo real adicionando as informações a seguir de dependência ao arquivo build.gradle do aplicativo e sonde a API GetMessages para exibir as 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'

Observação: se o aplicativo tentar acessar qualquer API de notificação como chatAsyncClient.startRealtimeNotifications() ou chatAsyncClient.addEventHandler(), haverá um erro de runtime.

PiP (picture in picture) de vídeo contínuo no iOS

O vídeo de entrada é interrompido quando o aplicativo entra em segundo plano. Se o aplicativo estiver em primeiro plano, o vídeo será renderizado corretamente.

iOS atendendo chamada recebida por meio do CallKit

As configurações de áudio de saída não se aplicariam quando o CallKit estiver habilitado e os usuários atenderem chamadas recebidas diretamente através do CallKit.

Biblioteca de interface do usuário

Você pode seguir a página wiki de problemas conhecidos nos repositórios do GitHub.