Wybór sieci dla poszczególnych aplikacji (PANS)

Pojazdy coraz częściej korzystają z połączenia, aby zarządzać rosnącą listą zastosowań wymaganych przez producentów OEM i właścicieli pojazdów. Powoduje to zwiększenie śladu danych i związanych z tym kosztów. Użyj funkcji wyboru sieci dla poszczególnych aplikacji (PANS), aby kierować ruch z określonych aplikacji w sieciach płatnych OEM.

Dzięki PANS możesz zarządzać objętością i kosztami wykorzystania danych, a jednocześnie zapewniać niezawodne, bezpieczne i połączone usługi samochodowe. PANS:

  • Składa się z nowego interfejsu API dodanego do ConnectivityManager, dostępnego tylko na urządzeniach samochodowych.
  • Udostępnia zaktualizowany interfejs API sugestii Wi-Fi (patrz Interfejs API sugestii Wi-Fi dotyczącej łączności z internetem), aby uwzględnić obsługę dynamicznie zmieniających się możliwości sieci PANS.
  • Zbiera dane pomocnicze.
  • Udostępnia aplikację referencyjną.

Dlaczego PANS?

PANS może:

  • dynamicznie aktualizować mapowania aplikacji do sieci;
  • Zarządzaj kierowaniem na poziomie aplikacji bez wprowadzania zmian w aplikacji.
  • Do mapowanych sieci OEM mają dostęp tylko aplikacje dozwolone przez OEM.
  • Deweloperzy aplikacji nie muszą wprowadzać żadnych zmian, aby wdrożyć tę funkcję.
  • Dane przeznaczone dla użytkowników umożliwiają śledzenie wykorzystania danych przez aplikacje w sieci zarządzanej przez OEM.
  • Dostęp do sieci jest bezpieczny i nie może być nadużywany w niezamierzonych przypadkach użycia lub przez nieautoryzowane aplikacje.
  • Zmiany w mapowaniu aplikacji do sieci w PANS są przekazywane użytkownikom.
  • Ta sama konfiguracja sieci jest stosowana do wszystkich użytkowników.

Główne zalety

PANS zapewnia producentom OEM te podstawowe korzyści:

  1. Producenci OEM mogą płacić za ruch w sieci zamiast za użytkowników:
    • Aktualizacje systemu mogą być udostępniane użytkownikowi bezpłatnie.
    • Korzystanie z sieci przez określone aplikacje może być bezpłatne dla użytkownika.
    • Telemetrią i innymi funkcjami analitycznymi można zarządzać bez dodatkowych kosztów dla użytkownika.
  2. Producenci OEM mogą zapewnić, że kluczowe aplikacje będą pozostawać w stanie połączonym nawet bez płatnego planu danych abonenta. Na przykład funkcje związane z bezpieczeństwem, takie jak mapy, Asystent (funkcja jazdy bez użycia rąk) i aktualizacje systemu, będą działać nawet wtedy, gdy użytkownik nie ma pakietu danych.
  3. PANS zapewnia dodatkową kontrolę nad kierowaniem ruchu sieciowego w Androidzie. Na przykład OEM-y mogą optymalnie zdefiniować logiczną topologię sieci do kierowania ruchu na poziomie aplikacji.

Rysunek 1 Zasady PANS

Wdrażanie PANS

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

Rysunek 2. Wdrażanie PANS

OemNetworkPreference

OemNetworkPreference to abstrakcja nad OEM_PAIDOEM_PRIVATE NetworkCapabilities mapowania aplikacji według nazwy pakietu na ustawienia sieci. Ustawienia sieci umożliwiają tworzenie hierarchii sieci. Na przykład mapowanie aplikacji na preferencję OEM_NETWORK_PREFERENCE_OEM_PAID powoduje zastosowanie domyślnych sieci przypisanej do aplikacji w następującej kolejności: najpierw sieć UNMETERED, jeśli sieć UNMETERED jest niedostępna, sieć OEM_PAID, a jeśli sieć OEM_PAID jest niedostępna, sieć domyślna systemu.

  • OEM_PAIDUżywany głównie w przypadku aplikacji, które mogą być kierowane w sieciach OEM i nie należących do OEM.
  • OEM_PRIVATE Używany głównie w przypadku aplikacji OEM do uzyskiwania dostępu do sieci przeznaczonej dla tych aplikacji.
/**
* 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 zmapować aplikację z ustawieniem sieci.
  2. Wywołaj funkcję setOemNetworkPreference z obiektem OemNetworkPreferences.
  3. Aby sprawdzać, czy interfejs API jest gotowy do użycia, użyj interfejsu Runnable.

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 dotyczące aplikacji, nie musisz jej instalować. Dlatego ustawienia sieci dla odinstalowanych aplikacji można konfigurować z wyprzedzeniem.
  • W danym momencie aplikacja może być przypisana tylko do jednej preferencji sieci.
  • Ustawienia sieci służą do konfigurowania domyślnej sieci aplikacji. Jest to sieć używana, gdy aplikacja nie określiła, których sieci chce używać za pomocą jednego ze specjalistycznych interfejsów API. Pozwala to nie tylko zaspokoić większość potrzeb związanych z połączeniemi, ale też umożliwia dalsze korzystanie ze specjalistycznych interfejsów API, takich jak interfejs API NetworkRequest, aby nie zakłócać dotychczasowych przypadków użycia aplikacji. Jeśli na przykład aplikacja chce wykonać operację w sieci bez limitu, PANS nie spowoduje, że będzie ona używać innej sieci.

Konfigurowanie sieci

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

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

Oto przykłady:

  1. Nakładka zasobów o nazwie config_ethernet_interfaces określa:
    • Nazwa interfejsu do skonfigurowania.
    • Pożą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. Wartość 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 etykietą OEM_PAID lub OEM_PRIVATE oznacza, że jest to sieć z ograniczonym dostępem. Sieci z ograniczonym dostępem mogą używać tylko aplikacje, które mają uprawnienie CONNECTIVITY_USE_RESTRICTED_NETWORKS, które jest kontrolowane przez producentów OEM.

Aplikacje z tym uprawnieniem mogą korzystać z sieci z ograniczonym dostępem, o ile wyraźnie o to proszą. Jednak te aplikacje nie będą domyślnie uzyskiwać dostępu do sieci z ograniczonym dostępem. Aplikacje mapowane za pomocą PANS mogą mieć domyślnie ustawione sieci OEM z ograniczonym dostępem i nie będą wymagać uprawnień do sieci z ograniczonym dostępem. Jeśli taka aplikacja ma sieć OEM z ograniczonym dostępem przypisaną jako sieć domyślna przez PANS, może też wyraźnie poprosić o połączenie z tą siecią OEM, jeśli zdecyduje się na to.

Sprawdzanie aplikacji referencyjnej

W kompilacji na potrzeby debugowania w samochodach udostępniamy aplikację referencyjną (wraz z kodem) o nazwie NetworkPreferenceApp, która pokazuje, jak:

  • Przetwarzanie danych PANS.
  • Ustaw zasady dotyczące PAN.
  • Ustaw domyślne zasady dla urządzenia.
  • Wyczyść zasady.
  • Zastosować zasadę podczas uruchamiania.
  • Użyj interfejsu Driver Distraction API (patrz wytyczne dotyczące rozpraszania uwagi kierowcy).
  • Dynamiczna aktualizacja Wi-Fi za pomocą OEM_PAID i OEM_PRIVATE.

Rysunek 3. Aplikacja referencyjna

Dane

Aby zapewnić przejrzystość w zakresie wykorzystywania danych, gromadzimy i udostępniamy dane dotyczące ilości danych przesyłanych przez mapowania sieci OEM_PAIDOEM_PRIVATE.

Rozwiązywanie problemów

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

  • Karta Połączenie dumpsys zawiera listę aktywnych sieci domyślnych dla poszczególnych aplikacji oraz powiązanych z nimi aplikacji (mapowanych z PANS).
  • Netd dumpsys zawiera adres IP UID 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łędzie Androida.