A partir do Android 12, o sistema operacional inclui suporte para a Configuração de direito de serviço TS.43, uma especificação da GSMA que define a etapa de verificação de direito para a ativação de serviços incluindo Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), ativação de serviço no dispositivo (ODSA) de dispositivos complementares eSIM (associados ao dispositivo solicitante) e informações do plano de dados.
Para oferecer suporte a essa especificação, o Android fornece um recurso de direito de serviço do 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). Com esse recurso de direito, o dispositivo pode consultar 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 do IMS podem usar o recurso de direitos do serviço IMS para provisionamento de serviços. Adotar o 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 com 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 ao serviço do IMS.
Figura 1. Arquitetura do recurso de direito TS.43
Como mostrado na Figura 1, a arquitetura do recurso de direito de serviço do IMS inclui os seguintes componentes:
- Biblioteca estática da API de serviço TS.43:essa biblioteca implementa a especificação TS.43, interage com um servidor de direitos de uma operadora e expõe APIs voltadas para apps para cada caso de uso do TS.43.
service_entitlement App cliente
ImsServiceEntitlement:esse app usa a API Service TS.43. O app implementa elementos de interface, incluindo webviews para renderizar o portal de serviços da operadora para que os usuários ativem serviços e interaja 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 trabalhar com um servidor de direitos baseado em TS.43 de uma operadora, consulte o app ImsServiceEntitlement.
As linhas numeradas na Figura 1 mostram como os componentes do recurso de autorização do serviço IMS se comunicam entre si. A seguir, descrevemos cada uma das etapas conforme indicado:
(1) O app cliente invoca a API de serviço TS.43 para iniciar uma solicitação de direito de serviço.
(2) A API de serviço TS.43 envia uma solicitação HTTP ao 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 o desafio-resposta EAP-AKA.
(4) O serviço TS.43 recebe dados de configuração ou direito ao serviço do servidor de direitos da operadora depois que a resposta EAP-AKA é verificada.
(5) O serviço TS.43 retorna o direito de serviço ou os dados de configuração para o app cliente.
(6) O app cliente processa os dados e, opcionalmente, renderiza o portal de serviços 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 Android 12, a biblioteca
service_entitlement e o app ImsServiceEntitlement podem ser portados para versões anteriores do Android.
Biblioteca service_entitlement
Como a biblioteca service_entitlement tem vinculação estática ao app
ImsServiceEntitlement, 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.
A seguir, descrevemos as APIs a serem usadas para esses casos de uso:
- App TS.43 usando o protocolo HTTP TS.43 implementado na biblioteca:
use as APIs na classe
ServiceEntitlement. - App não TS.43 usando 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
seguintes chaves CarrierConfig:
| 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 do 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 da Web para que os usuários
se inscrevam no serviço VoWiFi. Por exemplo, consentir com termos e
condições ou inserir um endereço de emergência.Isso geralmente é exigido pelas operadoras 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 |
Definido 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 um servidor de direitos e um portal da Web de uma operadora passa pela rede padrão, por exemplo, dados móveis ou Wi-Fi padrão.
Parceiros do GMS:as seguintes operadoras são compatíveis com o app de direitos TS.43 no Android 12, de acordo com 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 do 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
ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)
do sistema. Essa API também é usada para VoLTE (com
KEY_VOLTE_PROVISIONING_STATUS) e SMSoIP (com KEY_SMS_OVER_IP_ENABLED).
A interface do sistema pode ler o estado de provisionamento usando
getProvisioningIntValue ou registrando um callback para monitorar a
mudança de estado de provisionamento por registerProvisioningChangedCallback.
Substituir configurações para testes
Use os procedimentos a seguir para alterar temporariamente o comportamento do app ImsServiceEntitlement
para fins de teste. Para detalhes sobre como substituir as configurações
da operadora, consulte Substituir configurações da operadora.
Pular o processo de inscrição no VoWiFi
Para pular o processo de inscrição no VoWiFi e permitir que ele seja ativado diretamente,
substitua a configuração da operadora
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING e defina o valor dela como uma
string vazia.
Pular o provisionamento do IMS
Para pular o provisionamento do IMS, disponibilizar os serviços do IMS e permitir que os usuários
ativarem esses serviços sem 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. É necessário incluir o prefixo https://.
Substituir configurações da operadora
No Android 11, os comandos de substituição da configuração da operadora são integrados e estão disponíveis com privilégios de root.
O comando a seguir é um exemplo de como substituir a chave de configuração da operadora
carrier_volte_provisioning_required_bool e definir o valor dela como false. Você
pode executar o comando várias vezes para substituir várias configurações.
adb rootadb 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-valuesPara mais informações, execute o seguinte comando:
adb shell cmd phone cc