Compartilhar via


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 instalação. Ele capacita os desenvolvedores a criar um aplicativo de comunicação de uma maneira que permita que os usuários ingressem diretamente em uma chamada, sem nenhuma interação do usuário. O recurso também fornece a capacidade de configurar o estado padrão da câmera e do microfone (ativado ou desativado) antes que os usuários ingressem em uma chamada.

Neste artigo, você aprenderá a configurar o recurso corretamente em seu aplicativo.

Pré-requisitos

Configurar o recurso

Para obter mais informações, consulte a biblioteca de interface do usuário do Android de software livre e o código do aplicativo de exemplo.

Opção para ignorar a tela de instalação

CallCompositeLocalOptions é um wrapper de opções que define a capacidade da Biblioteca de Interface do Usuário para ignorar a tela de configuração usando um booliano. Por padrão, a capacidade de ignorar a tela de instalação é definida como false. Você precisa definir skipSetupScreen com um valor booliano true para fornecer a experiência de ignorar a tela de instalação.

Recomendamos que você crie seu aplicativo de forma que, quando um usuário tenta entrar em uma chamada, a permissão de microfone já esteja concedida para uma experiência fluida.

Captura de tela da participação em chamada ignorando a tela de configuração do Android.

Para usar o recurso, passe o valor booliano com skipSetupScreen para CallCompositeLocalOptions e injete-o em 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 instalação oferece aos usuários uma opção para definir as configurações de câmera e microfone antes de ingressar em uma chamada. Quando você configura ignorar a tela de instalaçã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 booliano com cameraOn e microphoneOn ativar ou desativar a câmera e 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 integração de chamadas da Biblioteca de Interface de Usuário (UI). Nesse caso, a câmera e o microfone estão ativados ou desativados na tela de instalação de acordo com a configuração definida.

Para definir o estado padrão da câmera e do microfone, passe o valor booliano com cameraOn e microphoneOn para CallCompositeLocalOptions e injete-o em 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

É recomendável permitir que os usuários ingressem em uma chamada desde que a permissão do microfone e da câmera tenha sido concedida, para usar o recurso de ignorar a tela de instalação com as APIs de configuração padrão do microfone e da câmera. Se você não gerenciar as permissões do usuário, a biblioteca de UI tentará fazê-lo por 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 de Interface do Usuário removerá a chamada no estágio de conexão e gerará um erro com o código CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED.

No entanto, os usuários podem ingressar em uma chamada mesmo se negarem a permissão da câmera. A Biblioteca de 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ê gerencie 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 uma interrupção de rede ocorrer durante uma chamada ou uma chamada for descartada, a Biblioteca de Interface do Usuário fechará e gerará 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 de Interface do Usuário será fechada na fase de conexão da chamada e gerará 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 error valores podem ser enviados para o manipulador de erros:

  • microphonePermissionNotGranted
  • networkConnectionNotAvailable
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
    println(callCompositeErrorEvent.errorCode)
}

Para obter mais informações, consulte a biblioteca de interface do usuário do iOS de software livre e o código de aplicativo de exemplo.

Opção para ignorar a tela de instalação

LocalOptions é um wrapper de opções que define a capacidade da Biblioteca de Interface do Usuário para ignorar a tela de configuração usando um booliano. Por padrão, a capacidade de ignorar a tela de instalação é definida como false. Você precisa definir skipSetupScreen com um valor booliano true para fornecer a experiência de ignorar a tela de instalação.

Recomendamos que você crie seu aplicativo de forma que, quando um usuário tenta entrar em uma chamada, a permissão de microfone já esteja concedida para uma experiência fluida.

Captura de tela da chamada de ingresso ignorando a tela de configuração do iOS.

Para usar o recurso, passe o valor booliano com skipSetupScreen para LocalOptions e injete-o em 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 instalação oferece aos usuários uma opção para definir as configurações de câmera e microfone antes de ingressar em uma chamada. Quando você configura ignorar a tela de instalaçã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 booliano com cameraOn e microphoneOn ativar ou desativar a câmera e 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 integração de chamadas da Biblioteca de Interface de Usuário (UI). Nesse caso, a câmera e o microfone estão ativados ou desativados na tela de instalação de acordo com a configuração definida.

Para definir o estado padrão da câmera e do microfone, passe o valor booliano com cameraOn e microphoneOn para LocalOptions e injete-o em callComposite.launch.

let localOptions = LocalOptions(cameraOn: true, microphoneOn: true)

callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)

Tratamento de permissões

É recomendável permitir que os usuários ingressem em uma chamada desde que a permissão do microfone e da câmera tenha sido concedida, para usar o recurso de ignorar a tela de instalação com as APIs de configuração padrão do microfone e da câmera. Se você não gerenciar as permissões do usuário, a biblioteca de UI tentará fazê-lo por 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 de UI cancelará a chamada no estágio de conexão e lançará um erro microphonePermissionNotGranted.

No entanto, os usuários podem ingressar em uma chamada mesmo se negarem a permissão da câmera. A Biblioteca de 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ê gerencie 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 uma interrupção de rede ocorrer durante uma chamada ou uma chamada for descartada, a Biblioteca de Interface do Usuário fechará e gerará um callEndFailed erro.

Se um usuário não tiver conexão de rede e tentar entrar na chamada após ignorar a tela de configuração, a Biblioteca de Interface do Usuário será encerrada na etapa de conexão da chamada e exibirá um erro networkConnectionNotAvailable. 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 para uma composição com falha:

callComposite?.events.onError = { error in
    print("CallComposite failed with error:\(error)")
}

Os seguintes error valores podem ser enviados para o manipulador de erros:

  • microphonePermissionNotGranted
  • networkConnectionNotAvailable

Próximas etapas