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 cumpra 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 independentemente 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 de acordo com as operadoras que exigem o 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 do RCS ProvisioningManager 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 exclusivo. O ImsService também precisa oferecer suporte ao AutoConfigurationServer (ACS) padrão para provisionamento de operadoras que não usam um mecanismo reservado.
Encaminhamento de mensagens SIP SipDelegateManager SipTransportImplBase 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 de portador dedicadas 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 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 eles possam ser publicados em uma entidade para a rede para a 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, os seguintes itens precisam ser verdadeiros:

  • 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 de RCS de números de telefone usando RcsUceAdapter. 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 um dos seguintes papéis RoleManager:

    • App de mensagens padrão: definido pelo usuário.
    • App de discagem 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 mais detalhes sobre a implementação, faça o download de 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.
  • A certificação do operador é aprovada para casos de teste de registro IMS único.