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.
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.
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.
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:
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
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.