Android 9 permite que los operadores proporcionen directamente detalles confiables del plan a los usuarios en la app de Configuración para reducir la confusión de los usuarios y las llamadas de asistencia. En dispositivos con 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 funciones 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 mes a mes:
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, como lo define
SubscriptionManager.canManageSubscription()
. - El operador envió el valor
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
a través deCarrierConfigManager
para indicar qué app puede administrar los planes de datos del operador. - 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 del operador sin necesidad de que esté preinstalada en la imagen del sistema de fábrica. El SO aplica (y el CDD exige) que todos los detalles del plan de datos configurados estén protegidos y solo estén disponibles para la app del operador que proporcionó los detalles al SO originalmente.
Se sugiere 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 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 según el 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 mostrarles a los usuarios un uso preciso de los datos y proporcionar vínculos directos a la app del operador para oportunidades de actualización o venta incremental.
- Los umbrales de advertencia de uso de datos y de notificación de límite 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 las tareas de JobScheduler que se pueden cambiar de hora, 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 borre la anulación o hasta que se alcance el valor de tiempo de espera (si se proporciona).
- Cuando se compara el uso actual de datos del usuario con el límite general de datos, el SO estima el uso normal de datos del usuario al final del ciclo de facturación y asigna de forma conservadora el 10% de los datos excedentes para mejorar la experiencia del usuario, por ejemplo, permitiendo que las apps usen datos de varios segmentos.
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 de acceso a la app del operador para actualizar su plan. Se recomienda a los fabricantes de dispositivos que personalicen la app de Configuración que sigan mostrando estos detalles.
android.telephony.cts.SubscriptionManagerTest
prueba las APIs de SubscriptionManager
que se describen en esta página, lo que garantiza que las apps del operador puedan configurar los detalles del plan de datos y que los cambios se propaguen dentro del SO.