Wybór sieci dla aplikacji (PANS)

Pojazdy w coraz większym stopniu polegają na łączności w celu zarządzania rosnącą listą przypadków użycia wymaganych zarówno przez producentów OEM, jak i właścicieli pojazdów, co skutkuje większym śladem danych i związanymi z tym kosztami. Użyj funkcji wyboru sieci dla 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 kosztami wykorzystania danych, zapewniając jednocześnie niezawodne, bezpieczne i połączone z samochodem wrażenia. PATELNIE:

  • Obejmuje nowy interfejs API dodany do ConnectivityManager , dostępny tylko dla urządzeń motoryzacyjnych.
  • Zapewnia zaktualizowany interfejs API sugestii Wi-Fi (patrz API sugestii Wi-Fi dla łączności internetowej ), aby uwzględnić obsługę dynamicznie zmieniających się możliwości sieci PANS.
  • Zbiera metryki pomocnicze.
  • Udostępnia aplikację referencyjną.

Dlaczego PANS?

PANS może:

  • Dynamicznie aktualizuj mapowania aplikacji do sieci.
  • Zarządzaj routingiem na poziomie aplikacji bez wprowadzania zmian w aplikacjach.
  • Tylko aplikacje zatwierdzone przez OEM mogą uzyskać dostęp do zmapowanych sieci OEM.
  • Twórcy aplikacji nie muszą wprowadzać żadnych zmian, aby wdrożyć tę funkcję.
  • Wskaźniki dostępne dla użytkowników śledzą wykorzystanie danych między aplikacjami a siecią w przypadku sieci zarządzanych przez producenta OEM.
  • Dostęp do sieci jest bezpieczny i nie można go nadużywać w wyniku niezamierzonego użycia lub nieautoryzowanych aplikacji.
  • Zmiany w mapowaniach aplikacji PANS do sieci są przekazywane użytkownikom.
  • Ta sama konfiguracja sieci jest stosowana dla wszystkich użytkowników.

Podstawowe zalety

PANS zapewnia producentom OEM następujące podstawowe zalety:

  1. Producenci OEM mogą płacić za ruch sieciowy zamiast za użytkowników:
    • Aktualizacje systemu mogą być dostarczane użytkownikowi bezpłatnie.
    • Korzystanie z sieci przez określone aplikacje może być zapewnione użytkownikowi bezpłatnie.
    • Użytkownik może zarządzać telemetrią i innymi analizami bezpłatnie.
  2. Producenci OEM mogą zapewnić, że krytyczne aplikacje pozostaną połączone nawet bez opłacanego przez użytkownika planu transmisji danych. Na przykład funkcje krytyczne dla bezpieczeństwa, takie jak mapy, asystent (prowadzenie pojazdu bez użycia rąk) i aktualizacje systemu działają nawet wtedy, gdy użytkownik nie ma planu transmisji danych.
  3. PANS zapewnia dodatkową szczegółowość kontroli specyficznej dla routingu ruchu sieciowego w systemie Android. Na przykład producenci OEM mogą optymalnie zdefiniować logiczną topologię sieci do routingu ruchu na poziomie aplikacji.

Rysunek 1 . Ramy PANS

Wdrażaj PANS

Aby zaimplementować PANS, udostępniono nowy interfejs API ConnectivityManager , setOemNetworkPreference . Ten nowy interfejs API mapuje aplikacje na OemNetworkPreference . Ten interfejs API jest dostępny tylko dla urządzeń motoryzacyjnych i jest oznaczony jako @SystemApi z nowym uprawnieniem signature .

Rysunek 2. Zaimplementuj PANS

Preferencje sieciowe OEM

OemNetworkPreference to abstrakcja w stosunku do OEM_PAID i OEM_PRIVATE NetworkCapabilities mapujących aplikacje według nazwy pakietu na preferencje sieciowe . Preferencje sieciowe umożliwiają tworzenie hierarchii sieci. Na przykład mapowanie aplikacji na preferencję OEM_NETWORK_PREFERENCE_OEM_PAID skutkuje następującym priorytetem sieci domyślnych przypisanych do aplikacji: najpierw użyj sieci UNMETERED , jeśli UNMETERED nie jest dostępna, użyj sieci OEM_PAID , a jeśli OEM_PAID nie jest dostępna, użyj domyślnej sieci systemowej sieć.

  • OEM_PAID Używany głównie w przypadku aplikacji, które mogą być kierowane zarówno w sieciach OEM, jak i innych producentów.
  • OEM_PRIVATE Używane głównie w przypadku aplikacji OEM w celu uzyskania dostępu do dedykowanej dla nich sieci.
/**
* 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łaj interfejsy API PANS

Aby skorzystać z interfejsów API PANS:

  1. Użyj OemNetworkPreferences , aby zmapować aplikację na preferencje sieciowe.
  2. Wywołaj setOemNetworkPreference za pomocą obiektu OemNetworkPreferences .
  3. Użyj interfejsu Runnable , aby nasłuchiwać zakończenia 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);

Rozważania

Podczas wdrażania PANS należy pamiętać o następujących kwestiach:

  • Preferencje sieciowe nie są zachowywane przy każdym uruchomieniu i należy je ponownie zastosować przy każdym uruchomieniu.
  • Aby utworzyć preferencje dla aplikacji, nie trzeba jej instalować. Dlatego preferencje sieciowe dla odinstalowanych aplikacji można ustawić proaktywnie.
  • W danym momencie aplikację można zmapować tylko do jednej preferencji sieciowej.
  • Preferencje sieciowe służą do ustawienia domyślnej sieci aplikacji. Jest to sieć używana, gdy aplikacja nie określiła, z jakich sieci chce korzystać za pośrednictwem jednego ze specjalistycznych interfejsów API. Nie tylko pokrywa to większość potrzeb w zakresie łączności, ale także umożliwia ciągłe korzystanie ze specjalistycznych interfejsów API, takich jak interfejs API NetworkRequest , aby nie zakłócać istniejących przypadków użycia aplikacji. Na przykład, jeśli aplikacja chce wykonać operację tylko w sieci bez pomiaru, PANS nie zmusi jej do korzystania z innej sieci.

Skonfiguruj sieć

W przypadku korzystania z odpowiednich preferencji sieciowych musi być dostępna sieć z funkcjami OEM_PAID lub OEM_PRIVATE . Android zapewnia obsługę konfiguracji możliwości sieci Ethernet i Wi-Fi. W przypadku sieci Ethernet można użyć nakładki zasobów config_ethernet_interfaces . Jest to ustawiane w czasie kompilacji.

W przypadku Wi-Fi interfejsu API WifiNetworkSuggestion można używać z nowymi interfejsami API systemu Android 12, setOemPaid(Boolean) i setOemPrivate(Boolean) . Można to zmienić w czasie wykonywania.

Rozważ te przykłady:

  1. Nakładka zasobów o nazwie config_ethernet_interfaces określa:
    • Nazwa interfejsu do skonfigurowania.
    • Żądane wartości 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. 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);
    

Ogranicz dostęp do sieci PANS

Oznaczenie sieci funkcją OEM_PAID lub OEM_PRIVATE oznacza tę sieć jako sieć z ograniczeniami . Z sieci z ograniczeniami mogą korzystać tylko aplikacje posiadające uprawnienie CONNECTIVITY_USE_RESTRICTED_NETWORKS kontrolowane przez producentów OEM.

Aplikacje z tym uprawnieniem mogą korzystać z sieci z ograniczeniami , jeśli wyraźnie o to poproszą . Jednak te aplikacje nie będą miały sieci z ograniczeniami jako domyślnych. Aplikacje mapowane za pomocą PANS mogą mieć ustawione sieci OEM z ograniczeniami jako domyślne i nie będą potrzebować uprawnień sieciowych do korzystania z nich. Gdy taka aplikacja ma ograniczoną sieć OEM przypisaną przez PANS jako sieć domyślną, ma również możliwość jawnego zażądania tej sieci OEM, jeśli aplikacja tak zdecyduje.

Przejrzyj aplikację referencyjną

Aplikacja referencyjna (w tym kod) o nazwie NetworkPreferenceApp jest dostępna w kompilacjach motoryzacyjnych z debugowaniem użytkownika i demonstruje, jak:

  • Korzystaj ze wskaźników PANS.
  • Ustaw politykę PANS.
  • Ustaw domyślną politykę dla urządzenia.
  • Wyczyść politykę.
  • Zastosuj politykę podczas uruchamiania.
  • Użyj interfejsu API rozpraszania uwagi kierowcy (patrz Wytyczne dotyczące rozpraszania uwagi kierowcy ).
  • Dynamicznie aktualizuj Wi-Fi za pomocą OEM_PAID i OEM_PRIVATE .

Rysunek 3. Aplikacja referencyjna

Metryka

Aby zapewnić przejrzystość wykorzystania danych, gromadzone i udostępniane są metryki dotyczące ilości danych przesłanych przez mapowania sieci OEM_PAID i OEM_PRIVATE .

Rozwiązywanie problemów

Większość problemów związanych z rozwiązywaniem problemów wynika z korzystania przez aplikację z niewłaściwej sieci (brak połączenia sieciowego) lub z nadmiaru danych. Aby włączyć szybkie rozwiązania:

  • Connectivity dumpsys zawiera listę aktywnych domyślnych sieci dla poszczególnych aplikacji i powiązanych z nimi aplikacji (mapowanych z PANS).
  • Netd dumpsys zawiera reguły UID IP i firewall.
  • Netstats dumpsys zawiera metryki PANS dla 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 Androida.