Android 9 permite que los proveedores proporcionen directamente detalles de planes autorizados 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 proveedor
Para configurar planes de datos, los proveedores 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 todos los meses:
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 proveedor envió el valor
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
a través deCarrierConfigManager
para indicar qué app puede administrar los planes de datos del proveedor. - 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.
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 proveedores tienen la libertad de usar una amplia gama de mecanismos, como recibir detalles de planes de datos a través de mensajes SMS internos del proveedor. 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 proporcionados por 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 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 "de uso medido", el SO puede informar la conexión móvil como "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 que los fabricantes de dispositivos que elijan personalizar la app de Configuración 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.