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 cumpram os requisitos introduzidos por algumas operadoras de telefonia. 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 meio de uma arquitetura com um conjunto de APIs que permite que a pilha de telefonia do AOSP gerencie os recursos MMTEL fornecidos pelo 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 os 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 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, em que 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 à 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 de 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 único do IMS

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

Área da API APIs de apps RCS APIs IMS do fornecedor Descrição
Provisionamento RCS ProvisioningManager (em inglês) ImsConfigImplBase Permite que um OEM ou operadora forneça um app para atualizar o status de provisionamento do RCS se a operadora usar um mecanismo de direito de acesso exclusivo. O ImsService também precisa ser compatível com o AutoConfigurationServer (ACS) padrão para provisionamento para operadoras que não usam um mecanismo reservado.
Encaminhamento de mensagens SIP SipDelegateManager SipTransportImplBase (link em inglês) Permite que um app RCS associe tags de recursos RCS específicas ao ImsService do dispositivo e envie e receba mensagens SIP e atualizações de registro de IMS associadas a essas tags.
Notificações do 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 se autentique com a rede e acesse as chaves usadas para recursos do RCS, como a transferência de arquivos.
Troca de recursos do usuário do RCS ImsRcsManager (link em inglês) RcsCapabilityExchangeImplBase Permite que o AOSP envie os recursos MMTEL e RCS ao fornecedor ImsService 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 saber 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 RCS. Para que essa permissão seja concedida, o seguinte precisa ser verdadeiro:

  • O app precisa ser instalado como um app privilegiado, ou seja, ele precisa ser pré-instalado no dispositivo e ter 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 essas duas condições não forem atendidas, o app não vai receber acesso à permissão android.permission.PERFORM_IMS_SINGLE_REGISTRATION. Isso significa que os apps de terceiros não podem acessar as APIs de registro único do RCS, porque elas exigem a certificação da operadora no dispositivo.

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

  • O app precisa ser instalado como um app privilegiado, o que significa que ele está pré-instalado no dispositivo e tem 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.
    • Aplicativo 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 pelo 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 a APN 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 fornece uma implementação de exemplo do ImsService para RCS. O código-fonte está em /testapps/ImsTestService.

Implementação

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

Validação

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

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