Direito ao serviço IMS

A partir do Android 12, o Android inclui suporte para a configuração de direito de acesso do TS.43, uma especificação GSMA que define a etapa de verificação de direito de acesso para a ativação de serviços, incluindo voz sobre Wi-Fi (VoWiFi), voz sobre LTE (VoLTE), SMS sobre IP (SMSoIP), ativação de serviço no dispositivo (ODSA, na sigla em inglês) de dispositivos complementares eSIM (associados ao dispositivo solicitante) e informações do plano de dados.

Para oferecer suporte a essa especificação, o Android oferece um recurso de direito de acesso ao serviço IMS que permite que um provedor de serviços informe aos dispositivos móveis o status dos serviços de rede do Subsistema multimídia IP (IMS). Esse recurso de direito permite que o dispositivo consulte o servidor de direitos da operadora, conforme definido pela especificação GSMA TS.43, para o status de direito do IMS usando a autenticação EAP-AKA sem exigir que os usuários insiram credenciais manualmente.

As operadoras com servidores de direitos de acesso ao IMS podem usar o recurso de direito de acesso ao serviço do IMS para provisionamento de serviço. A adoção do recurso oferece os seguintes benefícios:

  • Reduz os custos de teste e certificação para as operadoras, porque esse recurso de direito pode ser usado em vários produtos e OEMs.
  • reduz a sobrecarga de desenvolvimento para fabricantes de dispositivos por meio de um app Android padrão;
  • Permite que fabricantes de dispositivos e operadoras contribuam com o código do recurso, já que ele é de código aberto.
  • Oferece gerenciamento de endereços de emergência para operadoras da América do Norte.

Arquitetura

A figura a seguir descreve a arquitetura e o comportamento do recurso de direito de acesso ao serviço IMS.

Recurso de direitos do TS.43

Figura 1. Arquitetura do recurso de direito TS.43

Conforme mostrado na Figura 1, a arquitetura do recurso de direito de acesso ao serviço IMS inclui os seguintes componentes:

  • service_entitlement Biblioteca estática da API Service TS.43: essa biblioteca implementa a especificação TS.43, interage com o servidor de direitos de uma operadora e expõe APIs voltadas para apps para cada caso de uso do TS.43.
  • App cliente ImsServiceEntitlement:esse app usa a API Service TS.43. O app implementa elementos da interface, incluindo WebViews, para renderizar o portal de serviços da operadora para que os usuários ativem serviços, além de interagir com outros componentes do Android para gerenciar a experiência do usuário de ponta a ponta.

    Para mais informações sobre como configurar o Android para funcionar com um servidor de direitos baseado no TS.43 de uma operadora, consulte o app ImsServiceEntitlement.

As linhas numeradas na Figura 1 mostram como os componentes do recurso de direito de acesso ao serviço IMS se comunicam entre si. Confira a seguir uma descrição de cada uma das etapas:

(1) O app cliente invoca a API de serviço TS.43 para iniciar uma solicitação de direito de acesso ao serviço.

(2) A API de serviço TS.43 envia uma solicitação HTTP para o servidor de direitos da operadora para iniciar um desafio EAP-AKA.

(3) A API de serviço TS.43 invoca APIs de telefonia (por exemplo, getIccAuthentication) para concluir a resposta de desafio EAP-AKA.

(4) O serviço TS.43 recebe dados de direito ou configuração de serviço do servidor de direitos da operadora depois que a resposta EAP-AKA é verificada.

(5) O serviço TS.43 retorna os dados de configuração ou de direito de acesso do serviço ao app cliente.

(6) O app cliente processa os dados e renderiza, opcionalmente, o portal de serviço da operadora para que o usuário conclua a ativação do serviço.

Integração

Esta seção descreve o processo de integração da biblioteca service_entitlement e do app ImsServiceEntitlement.

Como não há dependência da API do Android 12, a biblioteca service_entitlement e o app ImsServiceEntitlement podem ter backport para plataformas Android mais antigas.

Biblioteca service_entitlement

Como a biblioteca service_entitlement está vinculada estaticamente ao ImsServiceEntitlement app, não são necessárias outras etapas para integrar a biblioteca ao app ImsServiceEntitlement.

A biblioteca service_entitlement pode ser integrada aos seus próprios apps para casos de uso do TS.43, como plano de dados e ODSA. A biblioteca também pode ser integrada a um app para casos de uso de direitos não TS.43 com base no protocolo EAP-AKA.

Confira a seguir as APIs que podem ser usadas nesses casos de uso:

  • App TS.43 que usa o protocolo HTTP TS.43 implementado na biblioteca: Use as APIs na classe ServiceEntitlement
  • App não TS.43 que usa o protocolo EAP-AKA implementado na biblioteca: use as APIs expostas na classe EapAkaHelper

App ImsServiceEntitlement

Por padrão, o Android inclui o app ImsServiceEntitlement instalado na partição do produto como um app privilegiado. Para configurar o app, use as chaves CarrierConfig abaixo:

Chave Valor
KEY_ENTITLEMENT_SERVER_URL_STRING URL do servidor de direitos da operadora. O prefixo https:// precisa ser incluído.
KEY_FCM_SENDER_ID_STRING ID de remetente do FCM da operadora.

Não defina esse valor se o FCM não for exigido pela operadora.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Defina como true se a operadora exigir uma interface do portal da Web para que os usuários se inscrevam no serviço VoWiFi. Por exemplo, consentir com os Termos e Condições ou inserir um endereço de emergência.

Isso geralmente é exigido pelas transportadoras na América do Norte.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Defina como com.android.imsserviceentitlement/.WfcActivationActivity se KEY_SHOW_VOWIFI_WEBVIEW_BOOL for true.
KEY_IMS_PROVISIONING_BOOL Defina como true se a operadora exigir o provisionamento de rede de serviços IMS (VoLTE/VoWiFi/SMSoIP) em segundo plano.

Isso é exigido por algumas operadoras europeias.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Defina como true se KEY_IMS_PROVISIONING_BOOL for true.

O tráfego HTTP para o servidor de direitos e o portal da Web de uma operadora passa pela rede padrão, por exemplo, dados móveis padrão ou Wi-Fi.

Parceiros do GMS:estas operadoras têm suporte ao app de direitos do TS.43 no Android 12, seguindo a especificação TS.43 v5.0:

  • EUA: CSpire, US Cellular, Cellcom
  • França: Orange

Interface do sistema adicional para provisionamento de IMS

Esta seção descreve como os OEMs podem oferecer suporte a outros elementos da interface do sistema relacionados ao provisionamento de serviços IMS (por exemplo, ao mostrar uma notificação quando o VoWiFi é provisionado).

O app ImsServiceEntitlement define o estado de provisionamento do VoWiFi na plataforma usando a API do sistema ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value). Essa API também é usada para VoLTE (com KEY_VOLTE_PROVISIONING_STATUS) e SMSoIP (com KEY_SMS_OVER_IP_ENABLED).

A interface do sistema poderá ler o estado de provisionamento usando getProvisioningIntValue ou registrando um callback para monitorar a mudança do estado de provisionamento por meio de registerProvisioningChangedCallback.

Substituir configurações para testes

Use os procedimentos a seguir para alterar temporariamente o comportamento do app ImsServiceEntitlement para fins de teste. Para saber mais sobre como modificar as configurações da operadora, consulte Como modificar as configurações da operadora.

Pular o processo de inscrição no VoWiFi

Para pular o processo de inscrição do VoWiFi, permitindo que ele seja ativado diretamente, substitua a configuração da operadora KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING e defina o valor como uma string vazia.

Pular provisionamento de IMS

Para pular o provisionamento do IMS, disponibilizando os serviços do IMS e permitindo que os usuários ativem esses serviços sem o provisionamento de rede, substitua a configuração da operadora KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL e defina o valor como false.

Mudar o URL do servidor de direitos

Para mudar o URL do servidor de direitos, substitua a configuração da operadora KEY_ENTITLEMENT_SERVER_URL_STRING e defina o valor como a string de URL esperada. Inclua o prefixo https://.

Substituir as configurações da operadora

No Android 11, os comandos de substituição de configuração da operadora são integrados e estão disponíveis com privilégios raiz.

O comando abaixo é um exemplo de como substituir a chave de configuração da operadora carrier_volte_provisioning_required_bool e definir o valor dela como false. É possível executar o comando várias vezes para substituir várias configurações.

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

Para limpar todas as substituições, use o seguinte comando:

adb shell cmd phone cc clear-values

Para mais informações, execute o seguinte comando:

adb shell cmd phone cc