Registro IMS único

O Android 12 oferece suporte a um modelo de registro único para fornecer recursos MMTEL e RCS. Esse modelo permite que os dispositivos tenham todos os recursos IMS gerenciados por um único registro IMS fornecido pelo ImsService do dispositivo e que atendam aos requisitos introduzidos por algumas operadoras de telecomunicações. Em comparação com um modelo de registro duplo, em que vários registros IMS são gerenciados em um dispositivo, o registro único reduz o tráfego na rede da operadora e aumenta a confiabilidade.

O Android 12 oferece suporte a esse modelo de registro único por uma arquitetura com um conjunto de APIs que permitem que a pilha de telefonia AOSP gerencie os recursos MMTEL fornecidos por ImsService e os recursos RCS fornecidos pelo app de mensagens RCS selecionado pelo usuário. Para oferecer suporte ao registro único do IMS, os fabricantes de dispositivos e fornecedores de SoC precisam implementar essas APIs para ativar os recursos RCS no app de mensagens RCS selecionado pelo usuário.

A Figura 1 ilustra a pilha IMS do dispositivo ao usar o modelo de registro único do IMS. Todos os apps IMS usam o ImsService padrão do dispositivo para recursos MMTEL e RCS em um único registro IMS. Isso inclui provisionamento, encaminhamento de mensagens SIP e troca de recursos do usuário RCS.

Arquitetura do modo de registro único

Figura 1. Arquitetura de modelo de registro único

O Android 11 e versões anteriores oferecem suporte apenas a um modelo de registro duplo para fornecer recursos MMTEL e RCS. O MMTEL é fornecido pelo ImsService do dispositivo, e os recursos RCS são implementados por cima e gerenciam a própria pilha IMS e a conexão com a rede da operadora de forma independente.

A Figura 2 ilustra a arquitetura do modelo de registro duplo. Nesse modelo, cada app é responsável por se conectar à rede da operadora e estabelecer um registro IMS para recursos MMTEL e RCS. O ImsService do dispositivo implementa o MMTEL, usa a conexão de dados IMS do dispositivo com a rede da operadora e opera de forma independente de outros apps RCS.

arquitetura do modo de registro duplo

Figura 2. Arquitetura do modelo de registro duplo

APIs de registro único do IMS

Os dispositivos que variam em operadoras que exigem registro IMS único precisam oferecer suporte às APIs de registro IMS único e definir o recurso do Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION. A Figura 3 mostra as APIs que oferecem suporte ao registro único do IMS.

Plataformas de API que oferecem suporte ao registro único do IMS

Figura 3. Plataformas de API de alto nível que oferecem suporte ao registro IMS único

Os dispositivos Android que oferecem suporte ao registro único do IMS como parte da pilha de telefonia do AOSP precisam ser compatíveis com todas as APIs do AOSP descritas na tabela a seguir.

Área de superfície da API APIs de apps do RCS APIs de IMS do fornecedor Descrição
Provisionamento de RCS ProvisioningManager ImsConfigImplBase Permite que um OEM ou uma operadora forneça um app para atualizar o status de provisionamento do RCS se a operadora usar um mecanismo de direitos proprietário. O ImsService também precisa oferecer suporte ao AutoConfigurationServer (ACS) padrão para provisionamento de operadoras que não usam um mecanismo proprietário.
Encaminhamento de mensagens SIP SipDelegateManager SipTransportImplBase Permite que um app RCS primeiro associe tags de recursos RCS específicos ao dispositivo ImsService e, em seguida, envie e receba mensagens SIP e atualizações de registro do IMS associadas a essas tags de recursos RCS.
Notificações de portador dedicado ConnectivityManager DataCallResponse Permite que um app detecte notificações de QoS em um soquete associado a uma porta local específica.
Autenticação do GBA bootstrapAuthenticationRequest GbaService Permite que um app RCS faça a autenticação na rede e acesse as chaves usadas para recursos do RCS, como transferência de arquivos.
Troca de recursos do usuário do RCS ImsRcsManager RcsCapabilityExchangeImplBase Permite que o AOSP envie os recursos MMTEL e RCS para o ImsService do fornecedor para que possam ser publicados em uma entidade para a rede para troca de recursos do usuário RCS. Também permite que outros apps interessados nos recursos RCS de um ou mais contatos consultem a rede para os recursos RCS dos contatos.

Segurança e permissões

O Android 12 apresenta as seguintes permissões para garantir o acesso seguro à rede da operadora e aos dados do usuário:

A permissão android.permission.PERFORM_IMS_SINGLE_REGISTRATION precisa ser definida pelo app de mensagens com os recursos do RCS. Para que essa permissão seja concedida, as seguintes condições precisam ser atendidas:

  • O app precisa ser instalado como um app privilegiado, ou seja, pré-instalado no dispositivo e com permissão para acessar permissões privilegiadas.
  • O app precisa ser definido como a função de SMS padrão do usuário usando RoleManager

Se as duas condições não forem atendidas, o acesso do app à permissão android.permission.PERFORM_IMS_SINGLE_REGISTRATION será negado. Isso significa que apps de terceiros não podem acessar as APIs de registro único do RCS, já que elas exigem certificação da operadora no dispositivo.

A permissão android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE permite que um app que também tem a permissão READ_CONTACTS solicite os recursos de RCS de números de telefone usando RcsUceAdapter. Para que essa permissão seja concedida, as seguintes condições precisam ser verdadeiras:

  • O app precisa ser instalado como um app privilegiado, ou seja, ele precisa estar pré-instalado no dispositivo e ter permissão para acessar permissões privilegiadas.
  • O app precisa ser definido como um dos seguintes papéis RoleManager:

    • App de mensagens padrão: definido pelo usuário.
    • App de discador padrão: definido pelo usuário.
    • App de contatos padrão: uma função introduzida no Android 12 que permite que o OEM defina um nome de pacote usando o valor de sobreposição do dispositivo config_systemContacts, que precisa corresponder ao app de contatos do dispositivo. Esse app recebe a função de contatos.

Para acessar o APN do IMS usando ConnectivityManager para configurar e gerenciar o tráfego de dados, os apps também precisam solicitar a permissão android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS.

Exemplos e origem

O Android oferece um app no AOSP que implementa um app de mensagens de teste com suporte básico a mensagens RCS para fins de teste e desenvolvimento. O app pode ser encontrado em testapps/TestRcsApp. Quando o app é instalado em um dispositivo, ele pode ser definido como o app de mensagens padrão do usuário e terá as permissões necessárias para acessar as APIs de registro único do IMS.

O Android também oferece uma implementação de exemplo do ImsService para RCS. O código-fonte está em /testapps/ImsTestService.

Implementação

Para mais detalhes sobre a implementação, faça o download de Registro IMS único no Android.

Validação

Para validar sua implementação do registro único do IMS, faça o seguinte:

  • Verifique se o conjunto de testes CtsTelephonyTestCases do CTS foi aprovado.
  • Instale e execute o TestRcsApp para executar casos de teste básicos de registro único durante a integração.
  • Aprovar a certificação da operadora para casos de teste de registro único do IMS.