O Android 9 permite que as operadoras forneçam detalhes autorizados do plano diretamente aos usuários no app Configurações para reduzir a confusão e as chamadas de suporte. Em dispositivos com o Android 4.0 e versões mais recentes, os usuários podem configurar manualmente os detalhes do plano de dados específico da operadora no app Configurações, por exemplo, definindo avisos e limites para gerenciar o uso de dados.
Configuração da operadora
Para configurar planos de dados, as operadoras podem adicionar funcionalidades aos apps Android atuais usando as
SubscriptionPlan APIs.
As APIs foram projetadas para oferecer suporte a uma ampla variedade de tipos de planos de dados, incluindo planos recorrentes e não recorrentes, e planos que mudam com o tempo.
Confira um exemplo de como configurar um tipo comum de plano de dados que se repete mensalmente:
SubscriptionManager sm =
context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
SubscriptionPlan.Builder.createRecurringMonthly(
ZonedDateTime.parse("2016-12-03T10:00:00Z"))
.setTitle("G-Mobile")
.setDataLimit(4_000_000_000L,
SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
.setDataUsage(200_493_293L, dataUsageTimestamp)
.build()));
O dispositivo só permite que um app configure planos de dados em uma destas condições:
- O chip definiu explicitamente um app que pode gerenciá-lo, conforme definido por
SubscriptionManager.canManageSubscription(). - A operadora enviou o
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRINGvalor viaCarrierConfigManagerpara indicar qual app pode gerenciar os planos de dados da operadora. - O dispositivo tem um app integrado à imagem do sistema que tem a permissão
MANAGE_SUBSCRIPTION_PLANS.
As duas primeiras condições permitem que o app da operadora seja instalado pelo usuário, sem exigir que ele seja pré-instalado na imagem do sistema na fábrica. O SO impõe (e o CDD exige) que todos os detalhes do plano de dados configurados sejam protegidos e disponibilizados apenas para o app da operadora que originalmente forneceu os detalhes ao SO.
Um design sugerido é que um app da operadora use um serviço de manutenção inativo para atualizar os detalhes do plano de dados diariamente, mas as operadoras podem usar uma ampla variedade de mecanismos, como receber detalhes do plano de dados por mensagens SMS internas da operadora. Os serviços de manutenção inativos são melhor implementados com um
JobScheduler job que usa
setRequiresDeviceIdle()
e
setRequiresCharging().
Uso pelo SO
O SO usa os detalhes do plano de dados fornecidos pelas APIs SubscriptionPlan das seguintes maneiras:
- Os detalhes do plano são exibidos pelo app Configurações para mostrar o uso de dados preciso aos usuários e fornecer links diretos para o app da operadora para oportunidades de upgrade/upsell.
- Os limites de aviso e notificação de uso de dados são configurados automaticamente com base nos detalhes do plano. O aviso é definido como 90% do limite.
- Se a operadora indicar temporariamente que a rede está "congestionada", o SO vai atrasar os jobs do JobScheduler que podem ser deslocados no tempo, reduzindo a carga na rede da operadora.
- Se a operadora indicar temporariamente que a rede é "ilimitada", o SO poderá informar a conexão celular como "ilimitada" até que a operadora limpe a substituição ou até que o valor de tempo limite (se fornecido) seja atingido.
- Ao comparar o uso de dados atual do usuário com o limite geral de dados, o SO estima o uso normal de dados do usuário no final do ciclo de faturamento e aloca de forma conservadora 10% de qualquer excedente de dados para melhorar a experiência do usuário, por exemplo, permitindo que os apps usem dados de vários caminhos.
Personalização e validação
O app Configurações do Android mostra todos os detalhes do plano de dados configurados pela operadora, garantindo que os usuários vejam o status mais preciso do relacionamento com a operadora e oferecendo um caminho para o app da operadora fazer upgrade do plano. Recomendamos que os fabricantes de dispositivos que optarem por personalizar o app Configurações continuem mostrando esses detalhes.
As SubscriptionManager APIs descritas nesta página são testadas por
android.telephony.cts.SubscriptionManagerTest, que garante que os detalhes do plano de dados
possam ser configurados por apps da operadora e que as mudanças sejam propagadas no
SO.