Как реализовать тарифные планы на мобильный интернет

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

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

Чтобы настроить тарифные планы, операторы могут добавить функции в свои приложения для Android, используя SubscriptionPlan API. 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().

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

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

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

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

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

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