A partir do Android 12, o Android inclui suporte para TS.43 Service Entitlement Configuration , uma especificação GSMA que define a etapa de verificação de direitos para a ativação de serviços, incluindo Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE) , SMS sobre 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 suportar esta especificação, o Android fornece um recurso de autorização de serviço IMS que permite que um provedor de serviços informe dispositivos móveis sobre o status dos serviços de rede do IP Multimedia Subsystem (IMS). Esse recurso de autorização permite que o dispositivo consulte o servidor de autorização da operadora conforme definido pela especificação GSMA TS.43 para o status de autorização do IMS usando a autenticação EAP-AKA sem exigir que os usuários insiram quaisquer credenciais manualmente.
As operadoras com servidores de autorização IMS podem usar o recurso de autorização de serviço IMS para provisionamento de serviços. A adoção do recurso oferece os seguintes benefícios:
- Reduz os custos de testes e certificação para 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 aplicativo Android padrão.
- Permite que fabricantes de dispositivos e operadoras contribuam com código para o recurso, já que o recurso é de código aberto.
- Fornece gerenciamento de endereços de emergência para operadoras norte-americanas.
Arquitetura
A figura a seguir descreve a arquitetura e o comportamento do recurso de autorização de serviço IMS.
Figura 1. Arquitetura de recurso de autorização TS.43
Conforme mostrado na Figura 1, a arquitetura do recurso de autorização de serviço IMS inclui os seguintes componentes:
-
service_entitlement
Biblioteca estática da API de serviço TS.43 : esta biblioteca implementa a especificação TS.43, interage com o servidor de direitos de uma operadora e expõe APIs voltadas para o aplicativo para cada caso de uso do TS.43. Aplicativo cliente
ImsServiceEntitlement
: este aplicativo usa a API de serviço TS.43. O aplicativo implementa elementos de UI, 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 obter mais informações sobre como configurar o Android para funcionar com um servidor de direitos baseado em TS.43 de uma operadora, consulte Aplicativo ImsServiceEntitlement .
As linhas numeradas na Figura 1 mostram como os componentes do recurso de autorização de serviço IMS se comunicam entre si. A seguir descrevemos cada uma das etapas conforme rotuladas:
(1) O aplicativo cliente invoca a API de serviço TS.43 para iniciar uma solicitação de autorização de serviço.
(2) A API do serviço TS.43 envia uma solicitação HTTP ao servidor de direitos da operadora para iniciar um desafio EAP-AKA.
(3) A API do serviço TS.43 invoca APIs de telefonia (por exemplo, getIccAuthentication
) para completar o desafio-resposta EAP-AKA.
(4) O serviço TS.43 recebe direitos de serviço ou dados de configuração do servidor de direitos da operadora após a resposta EAP-AKA ser verificada.
(5) O serviço TS.43 retorna o direito de serviço ou os dados de configuração para o aplicativo cliente.
(6) O aplicativo cliente trata os dados e, opcionalmente, renderiza o portal de serviços da operadora para que o usuário finalize a ativação do serviço.
Integração
Esta seção descreve o processo de integração da biblioteca service_entitlement
e do aplicativo ImsServiceEntitlement
.
Como não há dependência da API do Android 12, a biblioteca service_entitlement
e o aplicativo ImsServiceEntitlement
podem ser portados para plataformas Android mais antigas.
biblioteca service_entitlement
Como a biblioteca service_entitlement
está vinculada estaticamente ao ImsServiceEntitlement app
, nenhuma etapa adicional é necessária para integrar a biblioteca ao aplicativo ImsServiceEntitlement
.
A biblioteca service_entitlement
pode ser integrada aos seus próprios aplicativos para casos de uso do TS.43, como plano de dados e ODSA. A biblioteca também pode ser integrada a um aplicativo para casos de uso de direitos não TS.43 baseados no protocolo EAP-AKA.
A seguir descrevemos as APIs a serem usadas nesses casos de uso:
- Aplicativo TS.43 usando o protocolo HTTP TS.43 implementado na biblioteca: Use as APIs na classe
ServiceEntitlement
- Aplicativo não TS.43 usando o protocolo EAP-AKA implementado na biblioteca: Use as APIs expostas na classe
EapAkaHelper
Aplicativo ImsServiceEntitlement
Por padrão, o Android inclui o aplicativo ImsServiceEntitlement
instalado na partição do produto como um aplicativo privilegiado. Para configurar o aplicativo, use as seguintes chaves CarrierConfig:
Chave | Valor |
---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING | URL do servidor de direitos da operadora. O prefixo https:// deve ser incluído. |
KEY_FCM_SENDER_ID_STRING | ID do remetente FCM da operadora. Não defina esse valor se o FCM não for exigido pela operadora. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL | Definido como true se a operadora exigir uma interface de usuário 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 normalmente é exigido pelas operadoras da América do Norte. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING | Defina como com.android.imsserviceentitlement/.WfcActivationActivity , se KEY_SHOW_VOWIFI_WEBVIEW_BOOL 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.Isto é exigido por algumas transportadoras 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 portal da web de uma operadora passa pela rede padrão, por exemplo, dados móveis padrão ou Wi-Fi.
Parceiros GMS: as seguintes operadoras são suportadas pelo aplicativo de autorização TS.43 no Android 12, seguindo a especificação TS.43 v5.0:
- EUA: CSpire, US Cellular, Cellcom
- França: Laranja
UI de sistema adicional para provisionamento de IMS
Esta seção descreve como os OEMs podem oferecer suporte a elementos adicionais da UI do sistema relacionados ao provisionamento de serviços IMS (por exemplo, ao mostrar uma notificação quando o VoWiFi é provisionado).
O aplicativo ImsServiceEntitlement
define o estado de provisionamento VoWiFi na plataforma usando a API do sistema ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value)
. Esta API também é usada para VoLTE (com KEY_VOLTE_PROVISIONING_STATUS
) e SMSoIP (com KEY_SMS_OVER_IP_ENABLED
).
A UI do sistema pode então ler o estado de provisionamento usando getProvisioningIntValue
ou registrando um retorno de chamada para monitorar a mudança de estado de provisionamento por meio de registerProvisioningChangedCallback
.
Substituindo configurações para teste
Use os procedimentos a seguir para alterar temporariamente o comportamento do aplicativo ImsServiceEntitlement
para fins de teste. Para obter detalhes sobre como substituir configurações de operadora, consulte Substituindo configurações de operadora .
Ignorando o processo de inscrição do VoWiFi
Para ignorar o processo de inscrição do VoWiFi, permitindo que o VoWiFi seja ativado diretamente, substitua a configuração da operadora KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
e defina seu valor como uma string vazia.
Ignorando o provisionamento do IMS
Para ignorar 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 configure seu valor como false
.
Alterando o URL do servidor de direitos
Para alterar o URL do servidor de autorização, substitua a configuração da operadora KEY_ENTITLEMENT_SERVER_URL_STRING
e defina seu valor para a sequência de URL esperada. Você deve incluir o prefixo https://
.
Substituindo configurações de operadora
A partir do Android 11, os comandos de substituição de 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 seu valor como false
. Você pode 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 obter mais informações, execute o seguinte comando:
adb shell cmd phone cc