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.
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.
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.
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:
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, 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.