Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo fornece informações sobre as práticas recomendadas relacionadas aos SDKs de chamada dos Serviços de Comunicação do Azure.
Práticas recomendadas para o SDK da Web de Chamada dos Serviços de Comunicação do Azure
Esta seção fornece informações sobre as práticas recomendadas associadas ao SDK da Web de Chamada dos Serviços de Comunicação do Azure (JavaScript) para chamadas de voz e vídeo.
Conecte um microfone ou habilite um microfone do gerenciador de dispositivos quando uma chamada estiver em andamento
Quando nenhum microfone está disponível no início de uma chamada dos Serviços de Comunicação do Azure e, em seguida, um microfone fica disponível, a alteração gera um noMicrophoneDevicesEnumerated evento de diagnóstico. Quando esse evento acontece, seu aplicativo precisa invocar askDevicePermission para obter o consentimento do usuário para enumerar dispositivos. O usuário pode então silenciar ou desativar o som do microfone.
Descarte VideoStreamRendererView
As aplicações dos Serviços de Comunicação devem descartar VideoStreamRendererView ou a sua instância pai VideoStreamRenderer quando já não forem necessárias.
Desligar a chamada durante um evento onbeforeunload
Seu aplicativo deve invocar call.hangup quando o onbeforeunload evento é emitido.
Lidar com várias chamadas em vários separadores
Seu aplicativo não deve se conectar a chamadas de várias guias do navegador simultaneamente em dispositivos móveis. Essa situação pode causar um comportamento indefinido devido à alocação de recursos para o microfone e a câmera em um dispositivo. Incentivamos os desenvolvedores a sempre desligarem as chamadas quando elas forem concluídas em segundo plano antes de iniciar uma nova.
Lidar com o Sistema Operativo silenciando uma chamada quando há uma chamada telefónica.
Durante uma chamada dos Serviços de Comunicação do Azure (para iOS e Android), se uma chamada telefónica for recebida ou o assistente de voz for ativado, o SO silenciará automaticamente o microfone e a câmara do utilizador. No Android, a chamada é automaticamente desativada e o vídeo é reiniciado após o término da chamada. No iOS, desativar o mudo e reiniciar o vídeo requer ação do usuário.
Você pode usar o evento de qualidade microphoneMuteUnexpectedly para ouvir a notificação de que o microfone foi silenciado inesperadamente. Lembre-se de que, para participar novamente de uma chamada corretamente, você precisa usar o SDK 1.2.3-beta.1 ou posterior.
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
}
Seu aplicativo deve invocar call.startVideo(localVideoStream); para iniciar um fluxo de vídeo e deve usar this.currentCall.unmute(); para desativar o som do áudio.
Gerir dispositivos
Você pode usar o SDK dos Serviços de Comunicação do Azure para gerenciar seus dispositivos e operações de mídia.
Seu aplicativo não deve usar APIs nativas do navegador como getUserMedia ou getDisplayMedia para adquirir fluxos fora do SDK. Se você fizer isso, deverá descartar manualmente seus fluxos de mídia antes de usar DeviceManager ou outras APIs de gerenciamento de dispositivos por meio do SDK dos Serviços de Comunicação.
Solicitar permissões de dispositivo
Você pode solicitar permissões de dispositivo usando o SDK. Seu aplicativo deve usar DeviceManager.askDevicePermission para solicitar acesso a dispositivos de áudio e/ou vídeo.
Se o usuário negar acesso, DeviceManager.askDevicePermission retorna false para um determinado tipo de dispositivo (áudio ou vídeo) em chamadas subsequentes, mesmo depois que a página é atualizada. Nesse cenário, seu aplicativo deve:
- Detecte que o utilizador negou acesso anteriormente.
- Instrua o usuário a redefinir manualmente ou conceder explicitamente acesso a um tipo de dispositivo específico.
Gerenciar o comportamento de uma câmera que outro processo está usando
No Windows Chrome e no Windows Microsoft Edge: se você iniciar, ingressar ou aceitar uma chamada com vídeo ativado e outro processo (diferente do navegador em que o SDK da Web está sendo executado) estiver usando o dispositivo da câmera, a chamada será iniciada apenas com áudio e sem vídeo. Um
cameraStartFailedsinalizador de diagnóstico orientado ao utilizador é gerado porque a câmera falhou a arrancar.A mesma situação se aplica à ativação de vídeo no meio da chamada. Você pode desativar a câmera no outro processo para que esse processo liberte o dispositivo da câmera e, depois, iniciar novamente o vídeo a partir da chamada. Em seguida, o vídeo é ativado para a chamada e os participantes remotos começam a ver o vídeo.
Esse problema não existe no macOS Chrome ou macOS Safari porque o sistema operacional permite que processos e threads compartilhem o dispositivo da câmera.
Em dispositivos móveis: Se um ProcessA solicitar o dispositivo de câmera enquanto o ProcessB estiver usando, o ProcessA ultrapassará o dispositivo de câmera e o ProcessB deixará de usá-lo.
No Safari do iOS: não é possível manter a câmara ligada para várias aplicações de chamadas no mesmo separador ou entre separadores. Quando qualquer cliente de chamadas usa a câmera, ele assume o controlo da câmera de qualquer cliente de chamadas anterior que estava usando-a. O cliente da chamada anterior recebe um
cameraStoppedUnexpectedlyindicador de diagnóstico voltado para o utilizador.
Gerir a partilha de ecrã
Fechar um aplicativo não impede que ele seja compartilhado
Digamos que, a partir do Chromium, partilhe o ecrã da aplicação Microsoft Teams. Em seguida, selecione o botão X no aplicativo Teams para fechá-lo. Embora a janela esteja fechada, o aplicativo Teams continua sendo executado em segundo plano. O ícone ainda aparece na barra de tarefas da área de trabalho. Como a aplicação Teams ainda está em execução, continua a ser partilhada com participantes remotos.
Para impedir que o aplicativo seja compartilhado na tela, você precisa executar uma destas ações:
- Clique com o botão direito do rato no ícone da aplicação na barra de tarefas do ambiente de trabalho e, em seguida, selecione Sair.
- Selecione o botão Parar compartilhamento no navegador.
- Chame a operação da API do
Call.stopScreenSharing()SDK.
O Safari só pode partilhar em ecrã inteiro
O Safari permite a partilha de ecrã apenas para todo o ecrã. Esse comportamento é diferente do Chromium, que permite compartilhar a tela inteira, um aplicativo de desktop específico ou uma guia específica do navegador.
Você pode conceder permissões de compartilhamento de tela no macOS
Para partilhar o ecrã no macOS Safari ou macOS Chrome, conceda as permissões necessárias aos navegadores nas Preferências do Sistema>Segurança e Privacidade>Gravação do Ecrã.
Práticas recomendadas para o SDK nativo de chamada dos Serviços de Comunicação do Azure
Esta seção fornece informações sobre as práticas recomendadas associadas ao SDK Nativo de Chamadas dos Serviços de Comunicação do Azure para chamadas de voz e vídeo.
Plataformas suportadas
Aqui estão os requisitos mínimos da plataforma do sistema operacional para garantir a funcionalidade ideal do SDK nativo de chamada.
- Suporte para iOS 10.0+ em tempo de compilação e iOS 12.0+ em tempo de execução
- Xcode 12.0+
- Suporte para iPadOS 13.0+
Verificar as permissões do dispositivo para solicitações de aplicativos
Para usar o SDK nativo de chamada para fazer ou receber chamadas, os consumidores precisam autorizar cada plataforma a acessar os recursos do dispositivo. Como desenvolvedor, você deve solicitar o acesso do usuário e garantir que as permissões estejam habilitadas. O consumidor autoriza esses direitos de acesso, portanto, verifique se ele tem atualmente as permissões necessárias.
-
NSMicrophoneUsageDescriptionpara acesso ao microfone -
NSCameraUsageDescriptionpara acesso à câmara
Configurar os logs
Implementar o registro em log conforme descrito no tutorial sobre como recuperar arquivos de log é mais crítico do que nunca. Os logs detalhados ajudam no diagnóstico de problemas específicos para modelos de dispositivos ou versões do sistema operacional que atendem aos critérios mínimos do SDK. Incentivamos os desenvolvedores a configurar logs usando a API Logs. Sem os logs, a equipe de suporte da Microsoft não pode ajudar a depurar e solucionar problemas das chamadas.
Rastrear ID de Chamada
CallID é o ID exclusivo de uma chamada. Identifica eventos correlacionados de todos os participantes e terminais que se conectam durante uma única chamada. Na maioria dos casos, você o usa para revisar os logs. A equipa de Suporte da Microsoft solicita isso para ajudar a resolver problemas nas chamadas.
Você deve monitorar o CallID valor na telemetria que configurar na sua aplicação. Para entender como recuperar o valor de cada plataforma, siga as diretrizes no guia de solução de problemas.
Assine Diagnósticos voltados para o utilizador e estatísticas de qualidade dos media
Pode utilizar estas funcionalidades dos Serviços de Comunicação do Azure para ajudar a melhorar a experiência do utilizador:
- Diagnósticos Orientados para o Utilizador: Examine as propriedades de uma chamada para identificar a causa dos problemas que afetam os seus clientes.
- Estatísticas de qualidade de mídia: examine as métricas de qualidade de áudio, vídeo e compartilhamento de tela de baixo nível para métricas de chamadas recebidas e enviadas. Recomendamos que os dados sejam coletados e enviados para o seu processo de ingestão de dados do pipeline após o término de uma chamada.
Gerenciar o tratamento de erros
Se houver erros durante a chamada ou implementação, os métodos retornarão objetos de erro que contêm códigos de erro. É crucial usar esses objetos de erro para o tratamento adequado de erros e para exibir alertas. Os estados de chamada também retornam códigos de erro para ajudar a identificar os motivos por trás das falhas de chamada. Você pode consultar o guia de solução de problemas para resolver quaisquer problemas.
Gerenciar fluxos de vídeo
Certifique-se de descartar VideoStreamRendererView quando a interface do usuário não exibir mais o vídeo. Use VideoStreamType para determinar o tipo do fluxo.
Conduzir o gerenciamento geral de memória
Pré-alocar recursos. Inicialize o cliente de chamada e todos os recursos necessários durante a fase de inicialização do aplicativo, em vez de sob demanda. Essa abordagem reduz a latência ao iniciar uma chamada.
Elimine corretamente. Descarte todos os objetos de chamada após o uso, para liberar recursos do sistema e evitar vazamentos de memória. Certifique-se de cancelar a assinatura de eventos que possam causar fugas de memória.
Considere como os processos acessam a câmera ou o microfone
Em dispositivos móveis, se vários processos tentarem acessar a câmera ou o microfone ao mesmo tempo, o primeiro processo para solicitar acesso assume o controle do dispositivo. Como resultado, o segundo processo perde imediatamente o acesso a ele.
Otimizar o tamanho da biblioteca
A otimização do tamanho das bibliotecas no desenvolvimento de software é crucial pelos seguintes motivos, particularmente à medida que os aplicativos se tornam mais complexos e consomem muitos recursos:
Desempenho do aplicativo: bibliotecas menores reduzem a quantidade de código que um aplicativo deve carregar, analisar e executar. Essa redução pode melhorar significativamente o tempo de inicialização e o desempenho geral do seu aplicativo, especialmente em dispositivos que têm recursos limitados.
Uso de memória: minimizando o tamanho da biblioteca, você pode diminuir o espaço ocupado pela memória de tempo de execução de um aplicativo. Esta diminuição é importante para dispositivos móveis, onde a memória é frequentemente restringida. Menor uso de memória pode levar a menos falhas do sistema e melhor desempenho multitarefa.
Para obter mais informações, consulte: