Wybór sieci na podstawie aplikacji (PANS)

Pojazdy w coraz większym stopniu korzystają z łączności, aby obsługiwać rosnącą listę przypadków użycia zgłaszanych przez producentów OEM i właścicieli pojazdów. Powoduje to zwiększenie ilości danych i związanych z nimi kosztów. Użyj funkcji wyboru sieci dla poszczególnych aplikacji (PANS), aby kierować ruch określonych aplikacji w sieciach opłacanych przez producenta OEM.

Dzięki PANS możesz zarządzać ilością i kosztem wykorzystania danych, a jednocześnie zapewniać solidne, bezpieczne i połączone środowisko w samochodzie. PANS:

  • Zawiera nowy interfejs API dodany do ConnectivityManager, dostępny tylko na urządzeniach samochodowych.
  • Zawiera zaktualizowany interfejs Wi-Fi suggestion API (patrz Wi-Fi suggestion API for internet connectivity), który obsługuje dynamiczne zmiany możliwości sieci PANS.
  • Zbiera dane pomocnicze.
  • Zawiera aplikację referencyjną.

Dlaczego PANS?

PANS może:

  • dynamicznie aktualizować mapowania aplikacji na sieć;
  • Zarządzaj routingiem na poziomie aplikacji bez wprowadzania w nich zmian.
  • Tylko aplikacje dopuszczone przez OEM mogą mieć dostęp do mapowanych sieci OEM.
  • Deweloperzy aplikacji nie muszą wprowadzać żadnych zmian, aby wdrożyć tę funkcję.
  • Dane widoczne dla użytkownika śledzą wykorzystanie danych w sieci przez aplikację w przypadku sieci zarządzanych przez OEM.
  • Dostęp do sieci jest bezpieczny i nie można go nadużywać w niezamierzonych przypadkach użycia ani w nieautoryzowanych aplikacjach.
  • Zmiany w mapowaniach aplikacji na sieć PANS są przekazywane użytkownikom.
  • Ta sama konfiguracja sieci jest stosowana w przypadku wszystkich użytkowników.

Najważniejsze zalety

PANS zapewnia producentom OEM te główne korzyści:

  1. Producenci OEM mogą płacić za ruch w sieci zamiast użytkowników:
    • Aktualizacje systemu mogą być udostępniane użytkownikowi bezpłatnie.
    • Użytkownik może bezpłatnie korzystać z sieci w przypadku określonych aplikacji.
    • Telemetrią i innymi danymi analitycznymi można zarządzać bezpłatnie.
  2. Producenci OEM mogą zadbać o to, aby najważniejsze aplikacje pozostawały połączone nawet bez płatnego pakietu danych. Na przykład funkcje mające kluczowe znaczenie dla bezpieczeństwa, takie jak mapy, asystent (jazda bez użycia rąk) i aktualizacje systemu, działają nawet wtedy, gdy użytkownik nie ma pakietu danych.
  3. PANS zapewnia dodatkową szczegółowość kontroli dotyczącą routingu ruchu sieciowego na Androidzie. Na przykład producenci OEM mogą optymalnie zdefiniować logiczną topologię sieci do routingu ruchu na poziomie aplikacji.

Wdrażanie PANS

Aby wdrożyć PANS, udostępniamy nowy ConnectivityManager interfejs API, setOemNetworkPreference. Ten nowy interfejs API przypisuje aplikacje do OemNetworkPreference. Ten interfejs API jest dostępny tylko na urządzeniach samochodowych i jest oznaczony jako @SystemApi z nowym uprawnieniem signature.

OemNetworkPreference

OemNetworkPreference to abstrakcja OEM_PAIDOEM_PRIVATE NetworkCapabilities mapowania aplikacji według nazwy pakietu na preferencje sieci. Ustawienia sieci umożliwiają tworzenie hierarchii sieci. Na przykład przypisanie aplikacji do preferencji OEM_NETWORK_PREFERENCE_OEM_PAID powoduje przypisanie do niej domyślnych sieci w następującej kolejności priorytetów: najpierw użyj sieci UNMETERED, jeśli UNMETERED jest niedostępna, użyj sieci OEM_PAID, a jeśli OEM_PAID jest niedostępna, użyj domyślnej sieci systemowej.

  • OEM_PAID Używane głównie w przypadku aplikacji, które mogą być kierowane w sieciach OEM i innych.
  • OEM_PRIVATE Używane głównie przez aplikacje OEM, aby uzyskać dostęp do sieci przeznaczonej dla nich.
/**
* 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;

Wywoływanie interfejsów API PANS

Aby korzystać z interfejsów PANS API:

  1. Użyj OemNetworkPreferences, aby przypisać aplikację do preferencji sieci.
  2. Wywołaj funkcję setOemNetworkPreference z obiektem OemNetworkPreferences.
  3. Użyj interfejsu Runnable, aby nasłuchiwać zakończenia interfejsu API.

Na przykład:

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

co należy wziąć pod uwagę

Podczas wdrażania PANS pamiętaj o tych kwestiach:

  • Ustawienia sieci nie są zachowywane po ponownym uruchomieniu i muszą być ponownie stosowane przy każdym uruchomieniu.
  • Aby utworzyć ustawienie dla aplikacji, nie musi być ona zainstalowana. Dlatego ustawienia sieci dla odinstalowanych aplikacji można ustawić z wyprzedzeniem.
  • W danym momencie aplikacja może być przypisana tylko do 1 ustawienia sieci.
  • Ustawienia sieci służą do ustawiania domyślnej sieci aplikacji. Jest to sieć używana, gdy aplikacja nie określiła, z których sieci chce korzystać, za pomocą jednego ze specjalistycznych interfejsów API. Nie tylko zaspokaja to większość potrzeb związanych z łącznością, ale też umożliwia dalsze korzystanie ze specjalistycznych interfejsów API, takich jak interfejs NetworkRequest API, aby nie zakłócać istniejących przypadków użycia aplikacji. Na przykład, gdy aplikacja chce wykonać operację tylko w sieci bez limitu danych, PANS nie wymusi na niej użycia innej sieci.

Konfigurowanie sieci

Jeśli używasz odpowiednich ustawień sieci, musi być dostępna sieć z funkcjami OEM_PAID lub OEM_PRIVATE. Android obsługuje konfigurowanie funkcji sieci Ethernet i Wi-Fi. W przypadku sieci Ethernet możesz użyć nakładki zasobów config_ethernet_interfaces. Jest to ustawiane w czasie kompilacji.

W przypadku Wi-Fi interfejs WifiNetworkSuggestion API może być używany z nowymi interfejsami API Androida 12, setOemPaid(Boolean)setOemPrivate(Boolean). Można to zmienić w czasie działania.

Oto przykłady:

  1. Nakładka zasobu o nazwie config_ethernet_interfaces określa:
    • Nazwa interfejsu do skonfigurowania.
    • Żądane wartości parametru 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>
  2. Ten WiFiNetworkSuggestion można zmieniać dynamicznie:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                  .setSsid(WifiInfo.sanitizeSsid(ssid))
                  .setOemPrivate(true)
                  .build());
    mWifiManager.addNetworkSuggestions(list);

Ograniczanie dostępu do sieci PANS

Oznaczenie sieci za pomocą funkcji OEM_PAID lub OEM_PRIVATE sprawia, że jest ona traktowana jako sieć o ograniczonym dostępie. Sieci o ograniczonym dostępie mogą być używane tylko przez aplikacje, które mają uprawnienie CONNECTIVITY_USE_RESTRICTED_NETWORKS, kontrolowane przez producentów OEM.

Aplikacje z tym uprawnieniem mogą korzystać z sieci o ograniczonym dostępie, pod warunkiem że wyraźnie o to poproszą. Jednak te aplikacje nie będą miały domyślnie ograniczonych sieci. Aplikacje mapowane za pomocą PANS mogą mieć ustawione jako domyślne sieci OEM z ograniczeniami i nie będą potrzebować uprawnień do korzystania z nich. Gdy taka aplikacja ma przypisaną ograniczoną sieć OEM jako sieć domyślną przez PANS, może też wyraźnie zażądać tej sieci OEM, jeśli zdecyduje się to zrobić.

Sprawdzanie aplikacji referencyjnej

Aplikacja referencyjna (wraz z kodem) o nazwie NetworkPreferenceApp jest dostępna w wersjach samochodowych do debugowania przez użytkownika i pokazuje, jak:

  • Korzystanie z danych PANS.
  • Ustaw zasady PANS.
  • Ustaw domyślne zasady dotyczące urządzenia.
  • Usuń zasadę.
  • Zastosuj zasadę podczas uruchamiania.
  • Używaj interfejsu Driver Distraction API (patrz wytyczne dotyczące rozpraszania uwagi kierowcy).
  • Dynamicznie aktualizuj Wi-Fi za pomocą OEM_PAIDOEM_PRIVATE.

Dane

Aby zapewnić przejrzystość w zakresie wykorzystania danych, zbieramy i udostępniamy dane dotyczące ilości danych przesyłanych w ramach mapowań sieci OEM_PAIDOEM_PRIVATE.

Rozwiązywanie problemów

Większość problemów wynika z tego, że aplikacja korzysta z nieprawidłowej sieci (brak połączenia z siecią) lub z przekroczenia limitu danych. Aby włączyć szybkie rozwiązywanie problemów:

  • Łącznośćdumpsys zawiera listę aktywnych sieci domyślnych dla poszczególnych aplikacji i powiązanych z nimi aplikacji (mapowanych z PANS).
  • Netddumpsys zawiera identyfikator UID IP i reguły zapory sieciowej.
  • Netstats dumpsys zawiera dane PANS dotyczące poszczególnych aplikacji. Na przykład które aplikacje korzystały z której sieci OEM.

Wszystkie dane dumpsys są dostępne po utworzeniu raportu o błędach na Androidzie.