Implementación de los planes de datos

Android 9 permite que los proveedores proporcionen directamente a los usuarios detalles autorizados sobre los planes en la app de Configuración para reducir la confusión de los usuarios 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 proveedor en la app de Configuración, por ejemplo, establecer advertencias y límites para administrar el 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 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 estas condiciones:

  • La tarjeta SIM definió explícitamente una app que puede administrarla, como se define en SubscriptionManager.canManageSubscription().
  • El proveedor envió el KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING valor a través de CarrierConfigManager 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 proveedor sin necesidad de que se preinstale en la imagen del sistema en la fábrica. El SO aplica (y el CDD requiere) que todos los detalles configurados del plan de datos estén protegidos y solo estén disponibles para la app del proveedor que originalmente proporcionó los detalles al SO.

Un diseño sugerido es que una app del proveedor use un servicio de mantenimiento inactivo para actualizar los detalles del plan de datos a diario, pero los proveedores pueden usar una amplia variedad de mecanismos, como recibir detalles del plan de datos a través de mensajes SMS internos del proveedor. Los servicios de mantenimiento inactivo se implementan mejor con un JobScheduler trabajo 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 a los usuarios el uso de datos preciso y proporcionar vínculos directos a la app del proveedor para oportunidades de actualización o venta adicional.
  • Los umbrales de notificación de advertencia y 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 proveedor indica temporalmente que la red está "congestionada", el SO retrasa los trabajos de JobScheduler que se pueden cambiar de hora, lo que reduce la carga en la red del proveedor.
  • Si el proveedor indica temporalmente que la red es "sin medición", el SO puede informar que la conexión móvil es "sin medición" hasta que el proveedor borre la anulación o hasta que se alcance el valor de tiempo de espera (si se proporciona).
  • Cuando compara 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 los datos excedentes para mejorar la experiencia del usuario, por ejemplo, permitiendo que las apps usen datos de varias rutas.

Personalización y validación

La app de Configuración de Android muestra todos los detalles del plan de datos configurados por el proveedor, lo que garantiza que los usuarios vean el estado más preciso de su relación con el proveedor y les ofrece una ruta de acceso a la app del proveedor para actualizar su plan. Se recomienda que los fabricantes de dispositivos que elijan personalizar la app de Configuración sigan mostrando estos detalles.

Las SubscriptionManager APIs que se describen en esta página se prueban con android.telephony.cts.SubscriptionManagerTest, lo que garantiza que los detalles del plan de datos puedan configurarse mediante apps del proveedor y que los cambios se propaguen dentro de el SO.