Транспортные средства все больше полагаются на возможность подключения для управления растущим списком вариантов использования, запрашиваемых как OEM-производителями, так и владельцами транспортных средств, что приводит к увеличению объема данных и связанных с этим затрат. Используйте функцию выбора сети для каждого приложения (PANS) для маршрутизации трафика определенных приложений в сетях, оплачиваемых OEM-производителем.
С помощью PANS вы можете управлять объемом и стоимостью использования данных, одновременно обеспечивая надежную, безопасную и подключенную автомобильную среду. ПАНС:
- Состоит из нового API, добавленного в
ConnectivityManager
, доступного только для автомобильных устройств. - Предоставляет обновленный API предложений Wi-Fi (см. API предложений Wi-Fi для подключения к Интернету ), включающий поддержку динамически изменяющихся возможностей сети PANS.
- Собирает вспомогательные показатели.
- Предоставляет справочное приложение.
Почему ПАНС?
ПАНС может:
- Динамически обновляйте сопоставления приложений и сетей.
- Управляйте маршрутизацией на уровне приложений, не внося изменений в приложения.
- Только приложения, разрешенные OEM, могут получить доступ к сопоставленным OEM-сетям.
- Разработчикам приложений не нужно вносить какие-либо изменения для реализации этой функции.
- Метрики, ориентированные на пользователя, отслеживают использование данных приложения в сети для сетей, управляемых OEM.
- Доступ к сети безопасен и не может быть злоупотреблен непреднамеренным использованием или неавторизованными приложениями.
- Изменения в сопоставлении приложений PANS с сетью доводятся до сведения пользователей.
- Одна и та же конфигурация сети применяется ко всем пользователям.
Основные преимущества
PANS предоставляет OEM-производителям следующие основные преимущества:
- OEM-производители могут платить за сетевой трафик вместо пользователей:
- Обновления системы могут предоставляться пользователю бесплатно.
- Использование сети определенных приложений может быть предоставлено пользователю бесплатно.
- Телеметрией и другой аналитикой можно управлять бесплатно для пользователя.
- OEM-производители могут гарантировать, что критически важные приложения останутся подключенными даже без оплачиваемого пользователем тарифного плана. Например, критически важные для безопасности функции, такие как карты, помощник (вождение без помощи рук) и обновления системы, продолжают работать, даже если у пользователя нет тарифного плана.
- PANS обеспечивает дополнительную степень детализации контроля, специфичную для маршрутизации сетевого трафика в Android. Например, OEM-производители могут оптимально определить топологию логической сети для маршрутизации трафика уровня приложений.
Рисунок 1 . Система PANS
Внедрить ПАНС
Для реализации PANS предоставляется новый API ConnectivityManager
setOemNetworkPreference
. Этот новый API сопоставляет приложения с OemNetworkPreference
. Этот API доступен только для автомобильных устройств и помечен как @SystemApi
с новым разрешением signature
.
Рисунок 2. Внедрение PANS
OEMNetworkPreference
OemNetworkPreference
— это абстракция OEM_PAID
и OEM_PRIVATE
NetworkCapabilities
сопоставляющая приложения по имени пакета с сетевыми настройками . Сетевые настройки допускают сетевую иерархию. Например, сопоставление приложения с предпочтением OEM_NETWORK_PREFERENCE_OEM_PAID
приводит к следующему приоритету сетей по умолчанию, назначенных приложению: сначала используйте сеть UNMETERED
, если UNMETERED
недоступен, используйте сеть OEM_PAID
, а если OEM_PAID
недоступен, используйте системную сеть по умолчанию. сеть.
-
OEM_PAID
Используется в основном для приложений, которые можно маршрутизировать как в OEM-сетях, так и в сторонних сетях. -
OEM_PRIVATE
Используется в основном для OEM-приложений для получения доступа к выделенной для них сети.
/** * If an unmetered network is available, use it. * Otherwise, if a network with the OEM_PAID capability is available, use it. * Otherwise, use the general default network. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1; /** * If an unmetered network is available, use it. * Otherwise, if a network with the OEM_PAID capability is available, use it. * Otherwise, the app doesn't get a default network. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2; /** * Use only NET_CAPABILITY_OEM_PAID networks. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3; /** * Use only NET_CAPABILITY_OEM_PRIVATE networks. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;
Вызов API PANS
Чтобы использовать API PANS:
- Используйте
OemNetworkPreferences
, чтобы сопоставить приложение с сетевыми настройками. - Вызовите
setOemNetworkPreference
с объектомOemNetworkPreferences
. - Используйте интерфейс
Runnable
для прослушивания завершения API.
Например:
// Mapping three packages to two network preferences // Packages have a 1:1 mapping to network preferences OemNetworkPreferences pref = new OemNetworkPreferences.Builder() .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID) .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID) .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY) .build(); myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);
Соображения
При внедрении PANS имейте в виду следующие моменты:
- Сетевые настройки не сохраняются при каждой загрузке, и их необходимо применять повторно при каждой загрузке.
- Чтобы создать предпочтения для приложения, его не обязательно устанавливать. Таким образом, сетевые настройки для неустановленных приложений можно настроить заранее.
- В любой момент времени приложение может быть сопоставлено только с одним сетевым предпочтением.
- Сетевые настройки используются для установки сети по умолчанию для приложения. Это сеть, используемая, когда приложение не указало, какие сети оно хочет использовать, через один из специализированных API. Это не только покрывает подавляющее большинство потребностей в подключении, но также позволяет продолжать использовать специализированные API, такие как API
NetworkRequest
, чтобы не нарушать существующие сценарии использования приложений. Например, когда приложение хочет выполнить операцию только через сеть без лимита трафика, PANS не будет заставлять его использовать другую сеть.
Настройка сети
Сеть с возможностями OEM_PAID
или OEM_PRIVATE
должна быть доступна при использовании соответствующего сетевого предпочтения. Android обеспечивает поддержку настройки возможностей сетей Ethernet и Wi-Fi. Для сетей Ethernet вы можете использовать наложение ресурса config_ethernet_interfaces
. Это устанавливается во время компиляции.
Для Wi-Fi API WifiNetworkSuggestion
можно использовать с новыми API Android 12: setOemPaid(Boolean)
и setOemPrivate(Boolean)
. Это можно изменить во время выполнения.
Рассмотрим эти примеры:
- Наложение ресурса с именем
config_ethernet_interfaces
определяет:- Имя интерфейса для настройки.
- Желаемые значения
NetworkCapabilities
.<!-- 11 NET_CAPABILITY_NOT_METERED 12 NET_CAPABILITY_INTERNET 14 NET_CAPABILITY_TRUSTED 15 NET_CAPABILITY_NOT_VPN 22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE --> <string-array translatable="false" name="config_ethernet_interfaces"> <item>eth0;11,12,14,15,22;;</item></string-array>
- Это
WiFiNetworkSuggestion
можно изменить динамически:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Ограничить доступ к сетям PANS
Пометка сети возможностями OEM_PAID
или OEM_PRIVATE
помечает эту сеть как сеть с ограниченным доступом . Сети с ограниченным доступом могут использоваться только приложениями, имеющими разрешение CONNECTIVITY_USE_RESTRICTED_NETWORKS
, которое контролируется OEM-производителями.
Приложения с этим разрешением могут использовать сети с ограниченным доступом , если приложения явно запрашивают их . Однако эти приложения не будут использовать сети с ограниченным доступом по умолчанию. Приложения, отображаемые через PANS, могут иметь ограниченные сети OEM, установленные по умолчанию, и для их использования не потребуются ограниченные сетевые разрешения. Если такое приложение имеет ограниченную OEM-сеть, назначенную PANS в качестве сети по умолчанию, оно также имеет возможность явно запрашивать указанную OEM-сеть, если приложение решит это сделать.
Просмотрите эталонное приложение
Эталонное приложение (включая код) под названием NetworkPreferenceApp
предоставляется в автомобильных сборках для пользовательской отладки и демонстрирует, как:
- Используйте метрики PANS.
- Установите политику PANS.
- Установите политику по умолчанию для устройства.
- Очистить политику.
- Примените политику при загрузке.
- Используйте API отвлечения внимания водителей (см. Рекомендации по отвлечению внимания водителей ).
- Динамически обновляйте Wi-Fi с помощью
OEM_PAID
иOEM_PRIVATE
.
Рисунок 3. Эталонное приложение
Метрики
Чтобы обеспечить прозрачность использования данных, собираются и предоставляются метрики относительно объема данных, передаваемых через сетевые сопоставления OEM_PAID
и OEM_PRIVATE
.
Поиск неисправностей
Большинство условий устранения неполадок возникают либо из-за того, что приложение использует неправильную сеть (отсутствие подключения к сети), либо из-за избытка данных. Чтобы включить быстрое разрешение:
- Connectivity
dumpsys
включает список активных сетей по умолчанию для каждого приложения и связанных с ними приложений (сопоставленных из PANS). - Netd
dumpsys
включает UID IP и правила брандмауэра. - Netstats
dumpsys
включает метрики PANS для каждого приложения. Например, какие приложения использовали какую OEM-сеть.
Все данные dumpsys
доступны после создания отчета об ошибках Android.