Android 9 permite que los operadores proporcionen directamente detalles autorizados del plan a los usuarios en la app de Configuración para reducir la confusión y las llamadas de asistencia. En los dispositivos que ejecutan Android 4.0 y versiones posteriores, los usuarios pueden configurar manualmente los detalles de su plan de datos específico del operador en la app de Configuración, por ejemplo, establecer advertencias y límites para administrar su uso de datos.
Configuración por operador
Para configurar planes de datos, los operadores pueden agregar funcionalidad a sus apps para Android existentes con las APIs de SubscriptionPlan
.
Las APIs están diseñadas para admitir una amplia variedad de tipos de planes de datos, incluidos los planes recurrentes y no recurrentes, y los planes que cambian con el tiempo.
Este es un ejemplo de cómo configurar un tipo común de plan de datos que se repite mensualmente:
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()));
El dispositivo solo permite que una app configure planes de datos en una de las siguientes condiciones:
- La tarjeta SIM definió de forma explícita una app que puede administrarla, según lo define
SubscriptionManager.canManageSubscription()
. - La empresa de telefonía celular envió el valor de
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
a través deCarrierConfigManager
para indicar qué app puede administrar los planes de datos de la empresa. - El dispositivo tiene una app integrada en la imagen del sistema que tiene el permiso
MANAGE_SUBSCRIPTION_PLANS
.
Las dos primeras condiciones permiten que el usuario instale la app de operador, sin necesidad de que se preinstale en la imagen del sistema en la fábrica. El SO exige (y el CDD requiere) que todos los detalles del plan de datos configurados estén protegidos y solo estén disponibles para la app de la operadora que originalmente proporcionó los detalles al SO.
Un diseño sugerido es que una app de operador use un servicio de mantenimiento inactivo para actualizar los detalles del plan de datos a diario, pero los operadores pueden usar una amplia variedad de mecanismos, como recibir los detalles del plan de datos a través de mensajes SMS internos del operador. Los servicios de mantenimiento inactivo se implementan mejor con un trabajo JobScheduler
que usa setRequiresDeviceIdle()
y setRequiresCharging()
.
Uso por SO
El SO usa los detalles del plan de datos que proporcionan las APIs de SubscriptionPlan de las siguientes maneras:
- Los detalles del plan se muestran a través de la app de Configuración para mostrar el uso de datos preciso a los usuarios y proporcionar vínculos directos a la app del operador para oportunidades de actualización o venta adicional.
- Los umbrales de advertencia y notificación de límite de uso de datos se configuran automáticamente según los detalles del plan. La advertencia se establece en el 90% del límite.
- Si el operador indica temporalmente que la red está "congestionada", el SO retrasa los trabajos de JobScheduler que se pueden desplazar en el tiempo, lo que reduce la carga en la red del operador.
- Si el operador indica temporalmente que la red es "no medida", el SO puede informar que la conexión celular es "no medida" hasta que el operador quite la anulación o hasta que se alcance el valor de tiempo de espera (si se proporciona).
- Al comparar el uso de datos actual del usuario con el límite de datos general, el SO estima el uso de datos normal del usuario al final del ciclo de facturación y asigna de forma conservadora el 10% de cualquier excedente de datos para mejorar la experiencia del usuario, por ejemplo, permitiendo que las apps usen datos de múltiples rutas.
Personalización y validación
La app de Configuración de Android muestra todos los detalles del plan de datos configurado por el operador, lo que garantiza que los usuarios vean el estado más preciso de su relación con el operador y les ofrece una ruta a la app del operador para actualizar su plan. Se recomienda que los fabricantes de dispositivos que elijan personalizar la app de Configuración sigan mostrando estos detalles.
Las APIs de SubscriptionManager
que se describen en esta página se prueban con android.telephony.cts.SubscriptionManagerTest
, lo que garantiza que las apps de operadores puedan configurar los detalles de los planes de datos y que los cambios se propaguen dentro del SO.