O Android 12 apresenta suporte para um modelo de registro único para fornecer recursos MMTEL e RCS. Esse modelo permite que os dispositivos tenham todos os recursos IMS gerenciados por meio de um único registro IMS fornecido pelo ImsService do dispositivo e atendam aos requisitos apresentados por algumas operadoras de telecomunicações. Comparado com um modelo de registro duplo, no qual 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 permitem que a pilha de telefonia AOSP gerencie os recursos MMTEL fornecidos pelo ImsService
e os recursos RCS fornecidos pelo aplicativo de mensagens RCS selecionado pelo usuário. Para oferecer suporte ao registro único do IMS, os fabricantes de dispositivos e fornecedores de SoC devem implementar essas APIs para habilitar os recursos RCS no aplicativo 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 aplicativos IMS usam os recursos padrão ImsService para MMTEL e RCS do dispositivo em um único registro IMS. Isso inclui provisionamento, encaminhamento de mensagens SIP e troca de recursos do usuário RCS.
Figura 1. Arquitetura do modelo de registro único
O Android 11 e inferior suporta apenas um modelo de registro duplo para fornecer recursos MMTEL e RCS, onde o MMTEL é fornecido pelos recursos ImsService e RCS do dispositivo são implementados por cima e gerenciam sua própria pilha IMS e conexão com a rede da operadora de forma independente.
A Figura 2 ilustra a arquitetura para o modelo de registro duplo. Nesse modelo, cada aplicativo é responsável por se conectar à rede da operadora e estabelecer um registro IMS para os 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 aplicativos RCS.
Figura 2. Arquitetura do modelo de registro duplo
APIs de registro único IMS
Os dispositivos que variam em operadoras que exigem registro único de IMS devem ser compatíveis com as APIs de registro único de IMS e definir o recurso do Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
. A Figura 3 mostra as APIs que suportam o registro único do IMS.
Figura 3. Superfícies de API de alto nível que suportam o registro único do IMS
Os dispositivos Android que dão suporte ao registro único do IMS como parte da pilha de telefonia AOSP precisam oferecer suporte a todas as APIs AOSP descritas na tabela a seguir.
Área de superfície da API | APIs de aplicativos RCS | APIs IMS do fornecedor | Descrição |
---|---|---|---|
Aprovisionamento RCS | Gerente de Aprovisionamento | ImsConfigImplBase | Permite que um OEM ou operadora forneça um aplicativo para atualizar o status de provisionamento do RCS se a operadora usar um mecanismo proprietário de autorização de operadora. O ImsService também deve oferecer suporte ao AutoConfigurationServer (ACS) padrão para provisionamento para operadoras que não usam um mecanismo proprietário. |
Encaminhamento de mensagens SIP | SipDelegateManager | SipTransportImplBase | Permite que um aplicativo RCS primeiro associe tags de recurso RCS específicas ao ImsService do dispositivo e, em seguida, envie e receba mensagens SIP e atualizações de registro IMS associadas a essas tags de recurso RCS. |
Notificações dedicadas ao portador | Gerenciador de Conectividade | DataCallResponse | Permite que um aplicativo ouça notificações de QoS em um soquete associado a uma porta local específica. |
Autenticação GBA | bootstrapAuthenticationRequest | GbaServiceName | Permite que um aplicativo RCS se autentique com a rede e as chaves de acesso usadas para recursos RCS, como transferência de arquivos. |
Troca de capacidade do usuário RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Fornece ao AOSP a capacidade de enviar seus recursos MMTEL e RCS ao fornecedor ImsService para que possam ser publicados em uma entidade na rede para troca de recursos do usuário RCS. Também permite que outros aplicativos 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:
-
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
-
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
A permissão android.permission.PERFORM_IMS_SINGLE_REGISTRATION
deve ser definida pelo aplicativo de mensagens com os recursos RCS. Para que essa permissão seja concedida, o seguinte deve ser verdadeiro:
- O aplicativo deve ser instalado como um aplicativo privilegiado, o que significa que está pré-instalado no dispositivo e tem permissão para acessar permissões privilegiadas
- O aplicativo deve ser definido como a função SMS padrão do usuário usando
RoleManager
Se essas duas condições não forem atendidas, o aplicativo terá acesso negado à permissão android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Isso significa que aplicativos de terceiros não têm permissão para acessar APIs de registro único RCS, pois exigem certificação de operadora no dispositivo.
A permissão android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
quando concedida a um aplicativo que também tem a permissão READ_CONTACTS permite que o aplicativo solicite os recursos RCS de números de telefone usando RcsUceAdapter
. Para que essa permissão seja concedida, o seguinte deve ser verdadeiro:
- O aplicativo deve ser instalado como um aplicativo privilegiado, o que significa que está pré-instalado no dispositivo e tem permissão para acessar permissões privilegiadas.
O aplicativo deve ser definido como uma das seguintes funções de
RoleManager
:- Aplicativo de mensagens padrão: definido pelo usuário.
- Aplicativo de discagem padrão: definido pelo usuário.
- Aplicativo de contatos padrão: uma função introduzida no Android 12 que permite que o OEM defina um nome de pacote por meio do valor de sobreposição do dispositivo
config_systemContacts
, que deve corresponder ao aplicativo de contatos do dispositivo. Esse aplicativo recebe a função de contatos.
Para acessar o APN do IMS usando o ConnectivityManager
para configurar e gerenciar o tráfego de dados, os aplicativos também devem solicitar a permissão android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
Exemplos e fonte
O Android fornece um aplicativo em AOSP que implementa um aplicativo de mensagens de teste com suporte básico de mensagens RCS para fins de teste e desenvolvimento. Você pode encontrar o aplicativo em testapps/TestRcsApp
. Quando o aplicativo é instalado em um dispositivo, ele pode ser definido como o aplicativo 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 amostra do ImsService para RCS. O código-fonte está em /testapps/ImsTestService
.
Implementação
Para obter mais detalhes de implementação, baixe o Registro Único do IMS no Android .
Validação
Para validar sua implementação do registro único do IMS, faça o seguinte:
- Certifique-se de que o conjunto de testes CtsTelephonyTestCases CTS seja aprovado.
- Instale e execute o TestRcsApp para executar casos de teste básicos de registro único durante a integração.
- Passe na certificação de operadora para casos de teste de registro único do IMS.