No Android 12 e versões mais recentes, o Android oferece suporte à Configuração de direitos de serviço TS.43, uma especificação da GSMA que define a etapa de verificação de direitos para a ativação de serviços, incluindo Voice-over-Wi-Fi (VoWiFi), Voz sobre LTE (VoLTE), SMS sobre IP (SMSoIP), ativação de serviço no dispositivo (ODSA) com informações do dispositivo solicitante de dados do eSIM.
Para oferecer suporte a essa especificação, o Android oferece um recurso de direito de 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, na sigla em inglês). 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 IMS, usando a autenticação EAP-AKA, sem exigir que os usuários insiram credenciais manualmente.
Operadoras com servidores de direitos IMS podem usar o recurso de direito de serviço IMS para provisionamento de serviços. A adoção do recurso oferece os seguintes benefícios:
- Reduz os custos de teste e certificação para transportadoras, já que 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 código para o recurso, porque ele é de código aberto.
- Fornece gerenciamento de endereço 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.
Figura 1. Arquitetura do recurso de direitos do TS.43
Como mostrado na Figura 1, a arquitetura do recurso de direitos de serviço IMS inclui os seguintes componentes:
service_entitlement
Biblioteca estática da API Service TS.43:ela implementa a especificação TS.43, interage com o servidor de direitos de uma operadora e expõe APIs do app 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 em TS.43 da operadora, consulte App ImsServiceEntitlement.
As linhas numeradas na Figura 1 mostram como os componentes do recurso de direitos de serviço IMS se comunicam entre si. Veja a seguir cada uma das etapas conforme rotulado:
(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 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 de serviço TS.43 invoca as APIs de telefonia (por exemplo, getIccAuthentication
) para concluir a resposta do desafio EAP-AKA.
(4) O serviço TS.43 recebe dados de configuração ou de direitos 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 serviço ao 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 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á estaticamente vinculada ao
ImsServiceEntitlement app
, nenhuma outra etapa é necessária 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.
Veja a seguir as APIs a serem usadas nesses 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 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 de produtos como um app privilegiado. Para configurar o app, use as seguintes
chaves CarrierConfig:
Tecla | 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 a operadora não exige o FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
Defina como true se a operadora exigir uma interface de portal 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 por 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, por 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: laranja
interface de 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 de 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
.
Modificar configurações para testes
Use os procedimentos a seguir para mudar 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.
Ignorar 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 o provisionamento de IMS
Para pular o provisionamento de IMS, disponibilizando serviços IMS e permitindo que os usuários
ativem esses serviços sem provisionamento de rede, modifique a configuração da operadora
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
e defina o valor como false
.
Como 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. Você precisa incluir o prefixo https://
.
Modificar as 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 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 modificar 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