Реализовать планы данных

Android 9 позволяет операторам напрямую предоставлять пользователям достоверные данные о тарифном плане в приложении «Настройки», чтобы уменьшить путаницу и звонки в службу поддержки. На устройствах под управлением Android 4.0 и выше пользователи могут вручную настраивать данные своего тарифного плана оператора в приложении «Настройки», например, устанавливать предупреждения и лимиты для управления использованием данных.

Конфигурация по оператору

Для настройки тарифных планов операторы могут добавлять функциональность в свои существующие приложения Android с помощью API SubscriptionPlan . API разработаны для поддержки широкого спектра типов тарифных планов, включая как повторяющиеся, так и неповторяющиеся планы, а также планы, которые меняются со временем.

Вот пример настройки распространенного типа тарифного плана с ежемесячной оплатой:

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()));

Устройство позволяет приложению настраивать тарифные планы только при одном из следующих условий:

  • SIM-карта явно определяет приложение, которое может ею управлять, как определено в SubscriptionManager.canManageSubscription() .
  • Оператор передал значение KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING через CarrierConfigManager , чтобы указать, какое приложение может управлять тарифными планами оператора.
  • На устройстве имеется приложение, встроенное в образ системы, имеющее разрешение MANAGE_SUBSCRIPTION_PLANS .

Первые два условия позволяют пользователю установить приложение оператора, не требуя его предварительной установки в образ системы на заводе. Операционная система обеспечивает (и CDD требует), чтобы все настроенные данные тарифного плана были защищены и доступны только приложению оператора, которое изначально предоставило эти данные ОС.

Один из предлагаемых вариантов дизайна заключается в том, что приложение оператора использует службу обслуживания простоя для ежедневного обновления данных тарифного плана, но операторы могут свободно использовать широкий спектр механизмов, таких как получение данных тарифного плана через внутренние SMS-сообщения оператора. Службы обслуживания простоя лучше всего реализовать с помощью задания JobScheduler , которое использует setRequiresDeviceIdle() и setRequiresCharging() .

Использование ОС

Операционная система использует данные тарифного плана, предоставленные API SubscriptionPlan, следующими способами:

  • Подробная информация о плане отображается в приложении «Настройки», что позволяет пользователям видеть точные данные об использовании данных и предоставляет прямые ссылки на приложение оператора для возможностей обновления/допродажи.
  • Пороговые значения предупреждений и уведомлений об использовании данных настраиваются автоматически на основе данных плана; предупреждение устанавливается на уровне 90% от лимита.
  • Если оператор временно сообщает, что сеть «перегружена» , ОС задерживает задания JobScheduler, которые можно сдвинуть по времени, снижая нагрузку на сеть оператора.
  • Если оператор временно указывает, что сеть «безлимитная» , ОС может сообщать о сотовом соединении как о «безлимитном» до тех пор, пока оператор не отменит переопределение или пока не будет достигнуто значение тайм-аута (если указано).
  • Сравнивая текущий объем данных, используемых пользователем, с общим лимитом данных, ОС оценивает обычный объем данных, используемых пользователем, в конце платежного цикла и консервативно выделяет 10% любых избыточных данных для улучшения пользовательского опыта, например, позволяя приложениям использовать многопутевые данные.

Настройка и проверка

Приложение «Настройки» Android отображает все сведения о тарифном плане, настроенном оператором, гарантируя пользователям наиболее точный статус их отношений с оператором и предлагая пользователям путь в приложение оператора для обновления своего плана. Производителям устройств, которые решили настроить приложение «Настройки», рекомендуется продолжать показывать эти сведения.

API SubscriptionManager , описанные на этой странице, протестированы с помощью android.telephony.cts.SubscriptionManagerTest , который гарантирует, что детали тарифного плана могут быть настроены приложениями оператора и что изменения будут распространены в ОС.