Para dispositivos com o Android 12 ou versões mais recentes, o Android oferece suporte ao fracionamento de rede 5G, que é o uso da virtualização de rede para dividir conexões de rede únicas em várias conexões virtuais distintas que fornecem quantidades diferentes de recursos para tipos de tráfego diferentes. O dimensionamento de rede 5G permite que os operadores de rede dediquem uma parte da rede para fornecer recursos específicos a um determinado segmento de clientes. O Android 12 apresenta os seguintes recursos de fracionamento de rede empresarial 5G, que os operadores de rede podem oferecer aos clientes corporativos:
Fração de dispositivos corporativos para dispositivos totalmente gerenciados
Para empresas que fornecem dispositivos da empresa totalmente gerenciados aos funcionários, os provedores de rede podem fornecer uma ou mais fatias de rede corporativa ativas para onde o tráfego nos dispositivos da empresa é roteado. No Android 12, o Android permite que as operadoras ofereçam fatias corporativas por regras de URSP, em vez de configurar fatias por APNs.
Recorte de apps empresariais para dispositivos com perfis de trabalho
Para empresas que usam a solução perfil de trabalho, o Android 12 permite que os dispositivos roteiem o tráfego de todos os apps no perfil de trabalho para uma fatia de rede empresarial. As empresas podem ativar esse recurso usando um Controlador de política de dispositivo (DPC).
A solução de perfil de trabalho oferece um nível automático de autenticação e controle de acesso que as empresas precisam para garantir que apenas o tráfego de apps corporativos no perfil de trabalho seja roteado para a fatia da rede corporativa. Os apps no perfil de trabalho não precisam ser modificados para solicitar explicitamente a faixa de rede corporativa.
Como o fracionamento de rede 5G funciona no AOSP
O Android 12 apresenta suporte ao dimensionamento de rede 5G com adições à base de código de telefonia no AOSP e ao módulo de tethering para incorporar as APIs de conectividade necessárias para o dimensionamento de rede.
A plataforma de telefonia Android oferece APIs HAL e de telefonia para oferecer suporte ao fracionamento com base em solicitações de rede preenchidas pelo código de rede principal e pelos recursos de fracionamento 5G do modem. A Figura 1 descreve os componentes do recurso de corte de rede 5G.
Figura 1. Arquitetura de fracionamento de rede 5G no AOSP.
A plataforma de telefonia e conectividade oferece suporte a:
- Conversão de solicitações de rede para categorias de fatias em descritores de tráfego, que são transmitidos para o modem para correspondência e seleção de rota de tráfego URSP.
- Como voltar para a rede padrão se a fração da rede corporativa não estiver disponível
- Roteamento de tráfego de todos os apps no perfil de trabalho para a conexão correspondente
Suporte para fatiamento empresarial
- Detectar a presença de um perfil de trabalho no dispositivo
- Verificação de permissões ou instruções de roteamento fornecidas pelo DPC usado pelo administrador de TI da empresa
O serviço de rede principal inclui as seguintes mudanças no módulo de tethering no Android 12:
- A maioria das classes de API públicas ou do sistema
android.net.*
foi adicionada ao módulo de vinculação Expande os limites do módulo de tethering para incluir:
f/b/core/java/android/net/…
f/b/services/net/…
f/b/services/core/java/com/android/server/connectivity/…
f/b/services/core/java/com/android/server/ConnectivityService.java
f/b/services/core/java/com/android/server/TestNetworkService.java
Move o código da VPN para fora do módulo de tethering
O Android 12 move o código com os seguintes recursos para o módulo de tethering:
- Recebimento de solicitações de aplicativos para conexões de rede
- Receber solicitações do sistema (por exemplo, "colocar esses apps em uma faixa empresarial", introduzido no Android 12)
- O envio de solicitações do sistema para o código de telefonia, que tenta configurar redes ou fatias passando pela API HAL e pelo modem
- Informar o netd sobre como rotear o tráfego por app (introduzido no Android 12)
- Informar aos apps o que está acontecendo com o tráfego de rede usando
APIs
ConnectivityManager
, comoNetworkCallback
,getActiveNetwork
egetNetworkCapabilities
.
Implementação
Para oferecer suporte ao fatiamento de 5G em um dispositivo, ele precisa ter um modem compatível com
o HAL IRadio 1.6, que tem a
API
setupDataCall_1_6
. Essa API configura uma conexão de dados e inclui os seguintes parâmetros
para oferecer suporte ao fatiamento 5G:
trafficDescriptor
: especifica o descritor de tráfego enviado ao modemsliceInfo
: especifica informações para que a fatia de rede seja usada em caso de transferência de EPDG para 5GmatchAllRuleAllowed
: especifica se o uso de uma regra de URSP de correspondência padrão é permitido. A telefonia define esse valor como verdadeiro para redes padrão, mas não para frações. Essa regra é aplicada às redes padrão. Quando um app solicita uma fatia específica que não está disponível, ela é informada como indisponível. Para apps corporativos, o framework de telefonia pode usar a rede padrão se a rede corporativa não estiver disponível.
Os modems também precisam implementar a API
getSlicingConfig
,
a menos que ela seja informada como não compatível com a
API
getHalDeviceCapabilities
.
Requisitos empresariais
A seguir, descrevemos os requisitos para que as empresas usem o fatiamento de rede 5G em dispositivos em uma implantação empresarial do Android.
- Verifique se os dispositivos totalmente gerenciados ou de funcionários configurados com um perfil de trabalho
são compatíveis com SA 5G com modems compatíveis com a
API
setupDataCall_1_6
. - Trabalhe com o parceiro da operadora na configuração e desempenho do slice ou nas características do SLA.
Ativar o fatiamento de 5G em dispositivos configurados com um perfil de trabalho
Para dispositivos configurados com perfis de trabalho, o fracionamento de rede 5G fica desativado por
padrão no AOSP. Para ativar o recorte de rede, os administradores de TI corporativos podem ativar ou
desativar o roteamento de tráfego de apps de perfil de trabalho para o recorte de rede empresarial
por funcionário usando o DPC do EMM, que usa o método
setPreferentialNetworkServiceEnabled
na API
DevicePolicyManager
(DPM) (introduzida no Android 12).
Os fornecedores de EMM com DPCs personalizados precisam integrar a API DevicePolicyManager
para
oferecer suporte a clientes empresariais.
Regras do URSP
Esta seção inclui informações para operadoras sobre como configurar regras de URSP para diferentes categorias de fatia, incluindo empresa, CBS, baixa latência e tráfego de alta largura de banda. Ao configurar regras URSP para diferentes categorias de frações, as operadoras precisam usar os valores a seguir específicos do Android.
ID | Valor | Descrição |
---|---|---|
OSId | 97a498e3-fc92-5c94-8986-0333d06e4e47 |
O OSId para Android é um UUID da versão 5 gerado com o namespace ISO OID e o nome "Android". |
As operadoras precisam configurar regras de URSP para cada tráfego de fatia com o componente
de descritor de tráfego como "ID do SO + tipo de ID do app do SO". Por exemplo, o segmento "ENTERPRISE" precisa ter um valor de 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345
.
Esse valor é uma concatenação do OSId, do tamanho do OSAppId (0x0A
)
e do OSAppId.
Para mais informações sobre o tipo de componente do descritor de tráfego, consulte
3GPP TS 24.526 Tabela 5.2.1.
A tabela a seguir descreve os valores de OSAppId para diferentes categorias de frações.
Categoria do intervalo | OSAppId | Descrição |
---|---|---|
EMPRESA | 0x454E5445525052495345 |
O OSAppId é uma representação de matriz de bytes da string "ENTERPRISE". |
EMPRESA2 | 0x454E544552505249534532 |
O OSAppId é uma representação de matriz de bytes da string "ENTERPRISE2" |
ENTERPRISE3 | 0x454E544552505249534533 |
O OSAppId é uma representação de matriz de bytes da string "ENTERPRISE3". |
EMPRESA4 | 0x454E544552505249534534 |
O OSAppId é uma representação de matriz de bytes da string "ENTERPRISE4". |
EMPRESA5 | 0x454E544552505249534535 |
O OSAppId é uma representação de matriz de bytes da string "ENTERPRISE5". |
CBS | 0x434253 |
O OSAppId é uma representação de matriz de bytes da string "CBS". |
PRIORITIZE_LATENCY | 0x5052494f524954495a455f4c4154454e4359 |
O OSAppId é uma representação de matriz de bytes da string "PRIORITIZE_LATENCY". |
PRIORITIZE_BANDWIDTH | 0x5052494f524954495a455f42414e445749445448 |
O OSAppId é uma representação de matriz de bytes da string "PRIORITIZE_BANDWIDTH" |
Exemplo de regras URSP
As tabelas a seguir mostram exemplos de regras de URSP para empresas, CBS, baixa latência, alta largura de banda e tráfego padrão.
Empresa 1
O suporte para o Enterprise 1 está disponível no Android 12 e em versões mais recentes. Confira a seguir um exemplo de regra URSP para o tráfego ENTERPRISE1:
Regra URSP no 1 (enterprise1) | |
---|---|
Precedência | 1 (0x01) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | enterprise |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | enterprise |
Enterprise 2
O suporte para Enterprise 2 está disponível no Android 13 e versões mais recentes. Confira a seguir um exemplo de regra URSP para o tráfego ENTERPRISE2:
Regra URSP no 2 (enterprise2) | |
---|---|
Precedência | 2 (0x02) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534532 |
Descritor de seleção de rota no 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | empresa2 |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | enterprise2 |
Enterprise 3
O suporte para o Enterprise 3 está disponível no Android 13 e versões mais recentes. Confira a seguir um exemplo de regra de URSP para o tráfego ENTERPRISE3:
Regra URSP 3 (enterprise3) | |
---|---|
Precedência | 3 (0x03) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534533 |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | enterprise3 |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | empresa3 |
Enterprise 4
O suporte para o Enterprise 4 está disponível no Android 13 e em versões mais recentes. Confira a seguir um exemplo de regra de URSP para o tráfego ENTERPRISE4:
Regra URSP 4 (enterprise4) | |
---|---|
Precedência | 4 (0x04) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534534 |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | Enterprise4 |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | Enterprise4 |
Empresa 5
O suporte para o Enterprise 5 está disponível no Android 13 e versões mais recentes. Confira a seguir um exemplo de regra URSP para o tráfego ENTERPRISE5:
Regra URSP 5 (enterprise5) | |
---|---|
Precedência | 5 (0x05) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534535 |
Descritor de seleção de rota no 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | empresa5 |
Descritor de seleção de rota no 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | empresa5 |
CBS
O suporte para CBS está disponível no Android 13 e versões mais recentes. Confira a seguir um exemplo de regra URSP para tráfego de CBS:
Regra URSP nº 6 (CBS) | |
---|---|
Precedência | 6 (0x06) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E4703434253 |
Descritor de seleção de rota no 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | cbs |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | cbs |
Baixa latência
O suporte para baixa latência está disponível no Android 13 e versões mais recentes. Veja a seguir um exemplo de regra URSP para tráfego LOW_LATENCY:
Regra URSP 7 (baixa latência) | |
---|---|
Precedência | 7 (0x07) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 0x97A498E3FC925C9489860333D06E4E47125052494f524954495a455f4c4154454e4359 |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | latência |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | latência |
Largura de banda alta
O suporte para largura de banda alta está disponível no Android 13 e versões mais recentes. Confira a seguir um exemplo de regra URSP para tráfego HIGH_BANDWIDTH:
Regra 8 da URSP (alta largura de banda) | |
---|---|
Precedência | 8 (0x08) |
Descritor de tráfego 1 | |
ID do SO + tipo de ID do app do SO | 97A498E3FC925C9489860333D06E4E47145052494f524954495a455f42414e445749445448 |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYAAAA |
Componente 2: DNN | bandwidth |
Descritor de seleção de rota 2 | |
Precedência | 2 (0x02) |
Componente 1: DNN | bandwidth |
Padrão
Regra URSP 9 (padrão) | |
---|---|
Precedência | 9 (0x09) |
Descritor de tráfego 1 | |
match-all | N/A |
Descriptor de seleção de rota 1 | |
Precedência | 1 (0x01) |
Componente 1: S-NSSAI | SST:XX SD:YYYYYY |
Teste
Para testar o fatiamento de rede 5G, use o teste manual a seguir.
Para configurar um dispositivo para testes, faça o seguinte:
Verifique se a política URSP está configurada com uma regra não padrão que corresponde à categoria corporativa e que o descritor de seleção de rota correspondente mapeie a categoria corporativa para a fração de empresa e uma regra padrão que direcione o tráfego para a fração de Internet padrão.
Verifique se um perfil de trabalho está configurado no dispositivo.
Ativar o uso do fracionamento de rede pelo DPC
Para testar o comportamento do fracionamento de rede 5G, faça o seguinte:
- Verifique se uma sessão de PDU foi estabelecida com a fatia da empresa (por exemplo, usando um endereço IP específico) e se os apps no perfil de trabalho usam essa sessão de PDU.
- Verifique se uma sessão de PDU separada é estabelecida com o recorte de Internet padrão e se os apps no perfil pessoal usam a sessão de PDU.
Upsell por fracionamento 5G
O recurso de upsell por fracionamento 5G, disponível no Android 14 QPR1, permite que as operadoras ofereçam recursos aprimorados de rede (latência e largura de banda) aos usuários usando o fracionamento de rede 5G.
O recurso de upsell de fatiamento 5G usa a resposta TS.43 do servidor de direitos do operador para impulsionar o fluxo de compra. As operadoras podem usar a resposta para especificar o URL da visualização da Web de compra da operadora, enviar outros dados para a visualização da Web e indicar se a fatia está provisionada e disponível na rede da operadora.
As operadoras podem personalizar o comportamento do recurso de upsell de fatiamento 5G usando configurações da operadora, que controlam se as solicitações de compra podem ser feitas, quando os apps podem solicitar recursos premium e por quanto tempo o framework de telefonia aguarda respostas do usuário ou da rede.
O recurso de upsell de fatiamento 5G oferece uma interface, chamada
DataBoostWebServiceFlow
,
para permitir a comunicação entre o Android e a visualização da Web da operadora.
A Figura 2 mostra o fluxo de compra de upsell por fracionamento 5G:
Figura 2. Fluxo de compra de upsell por fracionamento 5G.
Processo de direito TS.43
Quando um usuário solicita recursos de rede aprimorados, o framework de telefonia solicita a configuração de direitos de serviço para o recurso premium solicitado. Se a resposta TS.43 for válida, o framework de telefonia vai usar os campos da resposta HTTP para direcionar a solicitação de compra.
Dividir campos de compra
A configuração de direito TS.43 inclui os seguintes campos de compra de fatia:
- Status de titularidade
Tecla:
EntitlementStatus
Tipo:
int
Valores aceitos:
0
(desativado),1
(ativado),2
(incompatível),3
(provisionamento) e4
(incluído).- Status do provisionamento
Tecla:
ProvStatus
Tipo:
int
Valores aceitos:
0
(não provisionado),1
(provisionado),2
(não disponível),3
(em andamento)
O framework de telefonia usa a combinação do status de direito e de provisionamento para determinar o estado atual da compra de fatias. O resultado pode ser um destes:
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
Se o status do direito for 1
(ativado) e o status de provisionamento for 0
(não provisionado), o framework de telefonia exibirá uma notificação de upsell ao usuário para comprar o aumento pelo WebView da operadora. A tabela a seguir
descreve o comportamento do framework de telefonia para diferentes combinações de
valores de provisionamento e status de direito.
Status do provisionamento | |||||
---|---|---|---|---|---|
Não provisionado (0 ) |
Provisionado (1 |
Indisponível (2 ) |
Em andamento (3 ) |
||
Status do direito | Desativado (0 ) |
Falha | Falha | Falha | Falha |
Ativado (1 ) |
Mostrar WebView | Já comprei | Já comprei | Em andamento | |
Incompatível (2 ) |
Falha | Falha | Falha | Falha | |
Provisionamento (3 ) |
Erro na operadora | Erro da operadora | Em andamento | Em andamento | |
Incluídos (4 ) |
Erro da operadora | Já comprei | Já comprei | Erro na operadora |
Campos do fluxo de serviço
A resposta TS.43 especifica o URL, os dados do usuário e o tipo de conteúdo para personalizar
o comportamento do WebView de compras pela operadora. Se o tipo de conteúdo não for especificado, o URL será carregado como uma solicitação GET. Se os dados do usuário existirem, eles serão anexados ao URL como um parâmetro de consulta (por exemplo, https://www.android.com?encodedValue=Base64EncodedUserData
). Caso não exista, o URL será usado no estado em que se encontra (por exemplo, https://www.android.com
).
Se o tipo de conteúdo for especificado no formato JSON ou XML, o URL será carregado como uma solicitação POST, e os dados do usuário (decodificados se estiverem codificados em Base 64) serão enviados como os dados para a solicitação POST.
- URL
Tecla:
ServiceFlow_URL
Tipo:
String
Exemplo:
"https://www.android.com"
- Dados do usuário
Tecla:
ServiceFlow_UserData
Tipo:
String
Exemplo:
"encodedValue=Base64EncodedUserData"
- Tipo de conteúdo
Tecla:
ServiceFlow_ContentsType
Tipo:
String
Valores aceitos:
0
(não especificado),1
(JSON),2
(XML)
Configurações da operadora
Confira abaixo as configurações da operadora disponíveis para personalizar o comportamento do recurso de upsell de fatiamento 5G.
KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY
Uma lista de recursos premium compatíveis. Esta é uma matriz int de
TelephonyManager.PremiumCapability
. Esses recursos premium compartilham o mesmo valor que a classeNetworkCapabilities.NetCapability
correspondente. Se um recurso premium for solicitado e não estiver incluído nessa configuração, a solicitação de compra vai falhar com o resultadoCARRIER_DISABLED
.No Android 14, somente
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY
é aceito.KEY_PREMIUM_CAPABILITY_MAXIMUM_DAILY_NOTIFICATION_COUNT_INT
O número máximo diário de vezes que a notificação de upsell de compra é mostrada ao usuário. Se o limite diário for atendido, a notificação de upsell não será mostrada e as solicitações de compra (incluindo solicitações de servidor de direito) serão limitadas até a meia-noite do dia seguinte. As solicitações de compra feitas após o limite diário ser alcançado falham com o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
.KEY_PREMIUM_CAPABILITY_MAXIMUM_MONTHLY_NOTIFICATION_COUNT_INT
O número máximo mensal de vezes que a notificação de upsell de compra é mostrada para o usuário. Se o máximo mensal for atingido, a notificação de upsell não será mostrada, e as solicitações de compra (incluindo as do servidor de direitos) serão limitadas até o primeiro dia do mês seguinte. As solicitações de compra feitas após o máximo mensal ser alcançado falham com o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
.KEY_PREMIUM_CAPABILITY_PURCHASE_URL_STRING
O URL de compra de operadora de backup que será mostrado ao usuário quando ele clicar na notificação de upsell. Se o URL de compra não for encontrado na resposta do TS.43 do servidor de direitos, esse valor será usado. Se nem o URL da resposta TS.43 nem a configuração da operadora forem válidos, o pedido de aprovação de compra falhará com o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
.KEY_PREMIUM_CAPABILITY_SUPPORTED_ON_LTE_BOOL
Permitir que recursos premium sejam comprados quando o dispositivo estiver conectado ao Long-Term Evolution (LTE). Se
true
, as solicitações de compra podem ser feitas em LTE e New Radio (NR). Se forfalse
, as solicitações de compra só poderão ser feitas no NR, e as solicitações feitas em LTE vão falhar com o resultadoPURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
.KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
A quantidade de tempo para mostrar a notificação de upsell de compra ao usuário antes que ela seja cancelada automaticamente. Quando a notificação é cancelada, as solicitações posteriores são limitadas e falham com o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
.KEY_PREMIUM_CAPABILITY_NOTIFICATION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
A quantidade de tempo em que as solicitações de compra subsequentes precisam ser limitadas após uma falha devido a tempo limite ou cancelamento do usuário. Se o usuário não clicar na notificação de upsell de compra dentro do tempo limite especificado por
KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
ou se ele cancelar ou dispensar a notificação, esse timer de recuo será iniciado. Enquanto esse timer estiver ativo, as solicitações de compra vão falhar com o resultadoPURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
.KEY_PREMIUM_CAPABILITY_PURCHASE_CONDITION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
A quantidade de tempo em que as solicitações de compra subsequentes precisam ser limitadas após uma falha devido à operadora ou à rede. Se a verificação de direito falhar, o URL estiver indisponível ou o URL de compra da operadora indicar uma falha, esse timer de backoff será iniciado. Enquanto esse timer estiver ativo, as solicitações de compra vão falhar com o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
.KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG
O período em que a rede precisa configurar uma configuração de fatiamento para o recurso de compra premium. Durante esse período, as solicitações de compra posteriores são bloqueadas e retornam o resultado
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
. Se a rede não definir uma configuração de fracionamento a tempo, os apps poderão solicitar a compra de recursos premium novamente. A telefonia não considera uma compra concluída até que a configuração de fatiamento correspondente seja enviada, independente de o usuário ter pago a operadora ou não.
Interface do JavaScript
Quando o usuário clica na notificação de aumento de rede, um objeto WebView
com
o URL de compra da operadora é mostrado para o usuário. As operadoras podem usar as APIs
fornecidas na interface
DataBoostWebServiceFlow
JavaScript no site de compra para se comunicar com o app de compra
de fatias.
O site da operadora pode conseguir o recurso premium solicitado com o método
getRequestedCapability()
.
Se a compra for concluída, o site da operadora vai notificar o app de compra
de fatia usando notifyPurchaseSuccessful()
ou
notifyPurchaseSuccessful(duration)
, em que duration
é um parâmetro opcional
que indica a duração pretendida da fatia.
Se a compra não for bem-sucedida, o site da operadora vai precisar notificar o app de compra
de fatia pelo método notifyPurchaseFailed(code, reason)
, em que code
é o código de falha que indica o motivo da falha, e reason
é o
motivo legível por humanos se o código de falha for desconhecido.
Se um desses métodos de resposta não for chamado, a compra não será considerada concluída, e a solicitação de compra será encerrada.
Confira abaixo os códigos de falha válidos que o site da operadora pode retornar em caso de falha na compra:
FAILURE_CODE_UNKNOWN
FAILURE_CODE_CARRIER_URL_UNAVAILABLE
FAILURE_CODE_AUTHENTICATION_FAILED
FAILURE_CODE_PAYMENT_FAILED
FAILURE_CODE_NO_USER_DATA
Quando a compra é concluída, a operadora precisa atualizar as
regras do URSP
com a fatia PRIORITIZE_LATENCY
para o dispositivo do usuário.