Реализация планов данных

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 , который гарантирует, что данные тарифного плана могут быть настроены приложениями оператора, а изменения распространяются в ОС.