Ignorar a tela de configuração em um aplicativo
A Biblioteca de Interface do Usuário dos Serviços de Comunicação do Azure oferece a opção de ingressar em uma chamada sem passar pela tela de configuração. Ele capacita os desenvolvedores a criar um aplicativo de comunicação de uma forma que permita que os usuários participem de uma chamada diretamente, sem qualquer interação do usuário. O recurso também fornece a capacidade de configurar o estado padrão da câmera e do microfone (ligado ou desligado) antes que os usuários ingressem em uma chamada.
Neste artigo, você aprenderá a configurar o recurso corretamente em seu aplicativo.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um recurso dos Serviços de Comunicação implantado. Crie um recurso dos Serviços de Comunicação.
- Um token de acesso do usuário para habilitar o cliente de chamada. Obter um token de acesso do usuário.
- Opcional: conclusão do início rápido para introdução aos compostos da Biblioteca da Interface do Usuário.
Configurar o recurso
Para obter mais informações, consulte a biblioteca de interface do usuário do Android de código aberto e o código do aplicativo de exemplo.
Opção para ignorar a tela de configuração
CallCompositeLocalOptions
é um wrapper de opções que define a capacidade da Biblioteca da Interface do Usuário de ignorar a tela de instalação usando um Booleano. Por padrão, a capacidade de ignorar a tela de configuração é definida como false
. Você precisa definir skipSetupScreen
com um true
valor booleano para fornecer a experiência de pular a tela de configuração.
Recomendamos que você crie seu aplicativo de tal forma que, quando um usuário tentar ingressar em uma chamada, a permissão de microfone já seja concedida para uma experiência de ingresso suave.
Para usar o recurso, passe o valor booleano com skipSetupScreen
para CallCompositeLocalOptions
e injete-o no callComposite.launch
.
import com.azure.android.communication.ui.calling.models.CallCompositeLocalOptions
val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
.setSkipSetupScreen(true)
callComposite.launch(callLauncherActivity, remoteOptions, localOptions)
Opções padrão para configuração de câmera e microfone
Por padrão, a tela de configuração oferece aos usuários a opção de definir as configurações da câmera e do microfone antes de ingressar em uma chamada. Quando você configura pular a tela de configuração para ingressar em uma chamada, os usuários não têm essa opção até que estejam na chamada.
Você pode passar um valor booleano com cameraOn
e para ligar ou desligar a câmera e microphoneOn
o microfone antes que os usuários ingressem em uma chamada. A funcionalidade de controlar o estado padrão da câmera e do microfone não será afetada se um usuário conceder a permissão para cada um deles, respectivamente.
Por padrão, ambos cameraOn
e microphoneOn
são definidos como false
. Você pode usar essa funcionalidade mesmo com a experiência padrão de ingresso de chamada da Biblioteca da Interface do Usuário. Nesse caso, a câmera e o microfone são ligados ou desligados na tela de configuração de acordo com a configuração definida.
Para definir o estado padrão da câmera e do microfone, passe o valor booleano com cameraOn
e para CallCompositeLocalOptions
e microphoneOn
injete-o no callComposite.launch
.
import com.azure.android.communication.ui.calling.models.CallCompositeLocalOptions
val localOptions: CallCompositeLocalOptions = CallCompositeLocalOptions()
.setMicrophoneOn(true)
.setCameraOn(true)
callComposite.launch(callLauncherActivity, remoteOptions, localOptions)
Tratamento de permissões
Recomendamos que você permita que os usuários participem de uma chamada com permissão de microfone e câmera sendo concedida para usar o recurso de ignorar a tela de configuração com APIs de configuração padrão para o microfone e a câmera. Se você não manipular as permissões do usuário, a Biblioteca da Interface do Usuário tentará manipulá-las para você.
Os usuários devem habilitar a permissão de microfone para ingressar em uma chamada. Se os usuários tentarem ingressar em uma chamada depois de negar a permissão do microfone, a Biblioteca da Interface do Usuário descartará a chamada no estágio de conexão e lançará um erro com o código CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
.
No entanto, os usuários podem participar de uma chamada mesmo que neguem a permissão da câmera. A Biblioteca da Interface do Usuário desabilita a funcionalidade da câmera quando a permissão da câmera é negada. Portanto, a API de configuração padrão para a câmera não afeta a experiência de chamada. Os usuários podem aproveitar o efeito da API de configuração padrão para a câmera depois de conceder a permissão da câmera.
Recomendamos que você manipule a permissão do microfone. Se os usuários ingressarem na chamada com a câmera ativada por padrão, recomendamos que você também manipule a permissão da câmera.
Erros de rede
Se ocorrer uma interrupção de rede durante uma chamada ou uma chamada cair, a Biblioteca da Interface do Usuário será fechada e lançará um erro com o código CallCompositeErrorCode.CALL_END_FAILED
.
Se um usuário não tiver uma conexão de rede e tentar ingressar na chamada depois de ignorar a tela de configuração, a Biblioteca da Interface do Usuário será fechada no estágio de conexão de chamada e lançará um erro com o código CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE
. Para evitar esse erro, recomendamos que você configure seu aplicativo para verificar a disponibilidade da rede antes que os usuários ingressem em uma chamada.
Para receber eventos de erro, chame setOnErrorHandler
com CallComposite
.
Os seguintes valores de error
podem ser enviados ao manipulador de erro:
microphonePermissionNotGranted
networkConnectionNotAvailable
Para obter mais informações, consulte a biblioteca de interface do usuário do iOS de código aberto e o código do aplicativo de exemplo.
Opção para ignorar a tela de configuração
LocalOptions
é um wrapper de opções que define a capacidade da Biblioteca da Interface do Usuário de ignorar a tela de instalação usando um Booleano. Por padrão, a capacidade de ignorar a tela de configuração é definida como false
. Você precisa definir skipSetupScreen
com um true
valor booleano para fornecer a experiência de pular a tela de configuração.
Recomendamos que você crie seu aplicativo de tal forma que, quando um usuário tentar ingressar em uma chamada, a permissão de microfone já seja concedida para uma experiência de ingresso suave.
Para usar o recurso, passe o valor booleano com skipSetupScreen
para LocalOptions
e injete-o no callComposite.launch
.
let localOptions = LocalOptions(skipSetupScreen: true)
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
Opções padrão para configuração de câmera e microfone
Por padrão, a tela de configuração oferece aos usuários a opção de definir as configurações da câmera e do microfone antes de ingressar em uma chamada. Quando você configura pular a tela de configuração para ingressar em uma chamada, os usuários não têm essa opção até que estejam na chamada.
Você pode passar um valor booleano com cameraOn
e para ligar ou desligar a câmera e microphoneOn
o microfone antes que os usuários ingressem em uma chamada. A funcionalidade de controlar o estado padrão da câmera e do microfone não será afetada se um usuário conceder a permissão para cada um deles, respectivamente.
Por padrão, ambos cameraOn
e microphoneOn
são definidos como false
. Você pode usar essa funcionalidade mesmo com a experiência padrão de ingresso de chamada da Biblioteca da Interface do Usuário. Nesse caso, a câmera e o microfone são ligados ou desligados na tela de configuração de acordo com a configuração definida.
Para definir o estado padrão da câmera e do microfone, passe o valor booleano com cameraOn
e para LocalOptions
e microphoneOn
injete-o no callComposite.launch
.
let localOptions = LocalOptions(cameraOn: true, microphoneOn: true)
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
Tratamento de permissões
Recomendamos que você permita que os usuários participem de uma chamada com permissão de microfone e câmera sendo concedida para usar o recurso de ignorar a tela de configuração com APIs de configuração padrão para o microfone e a câmera. Se você não manipular as permissões do usuário, a Biblioteca da Interface do Usuário tentará manipulá-las para você.
Os usuários devem habilitar a permissão de microfone para ingressar em uma chamada. Se os usuários tentarem ingressar em uma chamada depois de negar a permissão do microfone, a Biblioteca da Interface do Usuário descartará a chamada no estágio de conexão e lançará um microphonePermissionNotGranted
erro.
No entanto, os usuários podem participar de uma chamada mesmo que neguem a permissão da câmera. A Biblioteca da Interface do Usuário desabilita a funcionalidade da câmera quando a permissão da câmera é negada. Portanto, a API de configuração padrão para a câmera não afeta a experiência de chamada. Os usuários podem aproveitar o efeito da API de configuração padrão para a câmera depois de conceder a permissão da câmera.
Recomendamos que você manipule a permissão do microfone. Se os usuários ingressarem na chamada com a câmera ativada por padrão, recomendamos que você também manipule a permissão da câmera.
Erros de rede
Se ocorrer uma interrupção de rede durante uma chamada ou uma chamada cair, a Biblioteca da Interface do Usuário será fechada e lançará um callEndFailed
erro.
Se um usuário não tiver uma conexão de rede e tentar ingressar na chamada depois de ignorar a tela de configuração, a Biblioteca da Interface do Usuário será fechada no estágio de conexão de chamada e lançará um networkConnectionNotAvailable
erro. Para evitar esse erro, recomendamos que você configure seu aplicativo para verificar a disponibilidade da rede antes que os usuários ingressem em uma chamada.
Você pode implementar os fechamentos para agir sobre eventos compostos. O exemplo a seguir mostra um evento de erro de uma composição com falha:
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
Os seguintes valores de error
podem ser enviados ao manipulador de erro:
microphonePermissionNotGranted
networkConnectionNotAvailable