Registro Único IMS

O Android 12 apresenta suporte para um único modelo de registro para fornecer recursos MMTEL e RCS. Este modelo permite que os dispositivos tenham todos os recursos IMS gerenciados por meio de um único registro IMS fornecido pelo ImsService do dispositivo e cumpram os requisitos introduzidos por algumas operadoras de telecomunicações. 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 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 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 o ImsService padrão do dispositivo para recursos MMTEL e RCS em um único registro IMS. Isso inclui provisionamento, encaminhamento de mensagem SIP e troca de capacidade de usuário RCS.

Arquitetura de modo de registro único

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 pelo ImsService do dispositivo e os recursos RCS 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 do modelo de registro duplo. Nesse modelo, cada app é responsável por se conectar à rede da operadora e estabelecer um cadastro IMS para as funcionalidades MMTEL e RCS. O ImsService do dispositivo implementa MMTEL, usa a conexão de dados IMS do dispositivo com a rede da operadora e opera independentemente de outros aplicativos RCS.

arquitetura de modo de registro duplo

Figura 2. Arquitetura do modelo de registro duplo

APIs de registro único IMS

Os dispositivos que variam em operadoras que exigem registro único IMS devem oferecer suporte às APIs de registro único IMS e definir o recurso Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION . A Figura 3 mostra as APIs que suportam o registro único do IMS.

Superfícies de API com suporte para registro único IMS

Figura 3. Superfícies API de alto nível que suportam registro único IMS

Os dispositivos Android que oferecem suporte ao registro único IMS como parte da pilha de telefonia AOSP são necessários para oferecer suporte a todas as APIs AOSP descritas na tabela a seguir.

Área de superfície da API APIs de aplicativo RCS APIs IMS do fornecedor Descrição
provisionamento RCS ProvisioningManager 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 titularidade da operadora. O ImsService também deve suportar o AutoConfigurationServer (ACS) padrão para provisionamento de operadoras que não usam um mecanismo proprietário.
Encaminhamento de mensagem SIP SipDelegateManager SipTransportImplBase Permite que um aplicativo RCS primeiro associe tags de recursos RCS específicos ao dispositivo ImsService e, em seguida, envie e receba mensagens SIP e atualizações de registro IMS associadas a esses tags de recursos 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 GbaService 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 para a 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 em busca dos 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 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á o 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 acesso a permissões privilegiadas.
  • O aplicativo deve ser definido como uma das seguintes funções 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 ao OEM definir 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 IMS APN usando 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 exemplo de ImsService para RCS. O código-fonte está em /testapps/ImsTestService .

Implementação

Para mais detalhes de implementação, baixe IMS Single Registration no Android .

Validação

Para validar sua implementação do registro único 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 de registro único básico durante a integração.
  • Passe na certificação de transportadora para casos de teste de registro único IMS.