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

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