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

Pojazdy coraz częściej polegają na połączeniach, aby zarządzać stale rosnącą listą przypadków użycia żądanych przez producentów OEM i właścicieli pojazdów, co przełożyło się ilość danych i powiązane koszty. Użyj wyboru sieci dla poszczególnych aplikacji (PANS) do kierowania ruchu z określonych aplikacji w sieciach opłaconych przez OEM.

Dzięki numerowi PANS można jednocześnie zarządzać ilością i kosztami użycia danych solidnego, bezpiecznego i połączonego z siecią auta. Numery PAN:

  • Obejmuje nowy interfejs API dodany do ConnectivityManager dostępnych tylko w przypadku urządzeń samochodowych.
  • Udostępnia zaktualizowany interfejs API sugestii Wi-Fi (patrz Interfejs API sugestii Wi-Fi na potrzeby połączeń z internetem) , aby uwzględnić obsługę dynamicznie zmieniających się możliwości sieciowych PANS.
  • Gromadzenie danych pomocniczych.
  • Udostępnia aplikację referencyjną.

Dlaczego PANS?

Numery PANS umożliwiają:

  • Dynamicznie aktualizuj mapowania aplikacji na sieć.
  • Zarządzaj routingiem na poziomie aplikacji bez wprowadzania zmian w aplikacjach.
  • Dostęp do zmapowanych sieci OEM mają tylko aplikacje, które są dozwolone przez OEM.
  • Deweloperzy aplikacji nie muszą wprowadzać żadnych zmian, aby wdrożyć tę funkcję.
  • Dane dla użytkowników śledzą wykorzystanie danych między aplikacjami w przypadku rozwiązań zarządzanych przez OEM sieci.
  • Dostęp do sieci jest bezpieczny i nie można go wykorzystać w niezamierzony sposób ani nieautoryzowanych aplikacji.
  • Informacje o zmianach w mapowaniu aplikacji na sieć przy użyciu numeru PANS są przekazywane użytkownikom.
  • W przypadku wszystkich użytkowników stosowana jest ta sama konfiguracja sieci.

Główne zalety

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

  1. OEM może płacić za ruch w sieci, a nie za użytkowników:
    • Aktualizacje systemu mogą być udostępniane bezpłatnie użytkownikom.
    • Użytkownik może bezpłatnie korzystać z sieci przez określone aplikacje.
    • Zarządzanie danymi telemetrycznymi i innymi analizami jest bezpłatne dla użytkownika.
  2. OEM może zapewnić, że najważniejsze aplikacje pozostaną połączone nawet bez w ramach abonamentu. Są to na przykład funkcje kluczowe dla bezpieczeństwa, takie jak mapy, Asystent (obsługa bez użycia rąk) i aktualizacje systemu działają nawet gdy użytkownik nie korzysta z pakietu danych.
  3. Numer PANS zapewnia dodatkową szczegółową kontrolę nad ruchem w sieci w Androidzie. Na przykład producenci OEM mogą optymalnie zdefiniować sieć logiczną topologii do kierowania ruchu na poziomie aplikacji.

Rysunek 1. schemat PANS

Wdróż numery PANS

Aby wdrożyć numery PANS, nowy interfejs API ConnectivityManager, setOemNetworkPreference. Ten nowy interfejs API mapuje aplikacje na OemNetworkPreference. Ten interfejs API jest dostępny tylko dla urządzeń samochodowych i jest oznaczony jako @SystemApi z nowym uprawnieniem signature.

Rysunek 2. Wdróż numery PANS

Preferencja sieci OEM

OemNetworkPreference jest abstrakcją w zakresie OEM_PAID i OEM_PRIVATE NetworkCapabilities aplikacje mapujące według nazwy pakietu do ustawień sieci. Preferencje sieci pozwalają na hierarchie sieci. Na przykład mapowanie aplikacji na ustawienie OEM_NETWORK_PREFERENCE_OEM_PAID daje taki priorytet domyślnych sieci przypisanych do aplikacji: użycie Najpierw sieć UNMETERED, jeśli sieć UNMETERED jest niedostępna, użyj sieć OEM_PAID, a jeśli sieć OEM_PAID jest niedostępna, użyj systemu sieć domyślna.

  • OEM_PAID Używany głównie w przypadku aplikacji, które można kierować na Sieci OEM i innych firm.
  • OEM_PRIVATE Używany głównie w przypadku aplikacji OEM w celu uzyskiwania dostępu do w odpowiedniej sieci reklamowej.
/**
* 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 korzystać z interfejsów API PANS:

  1. Użyj OemNetworkPreferences, aby zmapować aplikację na preferencję sieci.
  2. Zadzwoń do firmy setOemNetworkPreference, używając: OemNetworkPreferences obiektu.
  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ę

Stosując numery PANS, pamiętaj o tych kwestiach:

  • Ustawienia sieci nie są zachowywane podczas uruchamiania i trzeba je są ponownie stosowane przy każdym uruchomieniu.
  • Aby można było określić preferencje dla aplikacji, nie trzeba jej instalować. Dlatego też ustawienia odinstalowanych aplikacji można skonfigurować proaktywnie.
  • W danym momencie aplikację można zmapować tylko na jedno ustawienie sieci.
  • Ustawienia sieci służą do określania domyślnej sieci aplikacji. To jest Sieć używana, gdy aplikacja nie określiła, przez które sieci chce używać sieci wyspecjalizowanych interfejsów API. Te rozwiązania nie tylko zaspokajają zdecydowaną większość potrzeb w zakresie łączności, umożliwia również dalsze korzystanie z wyspecjalizowanych interfejsów API, takich jak NetworkRequest API tak, aby nie zakłócać istniejących przypadków użycia aplikacji. Na przykład, gdy aplikacja chce wykonać tylko w sieci bez pomiaru, numer PANS nie wymusza na nim użycia innej sieci.

Konfigurowanie sieci

Sieć z OEM_PAID lub OEM_PRIVATE funkcje muszą być dostępne przy korzystaniu z odpowiednich preferencji sieci. Android, zapewnia obsługę konfiguracji możliwości sieci Ethernet i Wi-Fi. Dla: sieci Ethernet, możesz użyć nakładki zasobów config_ethernet_interfaces. Jest ona ustawiana podczas kompilacji.

W przypadku Wi-Fi interfejsu API WifiNetworkSuggestion można używać z nowym modułem Interfejsy API Androida 12, setOemPaid(Boolean) oraz setOemPrivate(Boolean) Można to zmienić w czasie działania.

Weźmy pod uwagę te przykłady:

  1. Nakładka zasobu 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. Element WiFiNetworkSuggestion można zmienić 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

Tagowanie sieci za pomocą tagów OEM_PAID lub OEM_PRIVATE oznacza, że sieć jest siecią z ograniczonym dostępem. Sieci z ograniczonym dostępem mogą być używane tylko przez aplikacje, które mają 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 aplikacje tego zażądają . Jednak dla tych aplikacji nie będzie domyślnie włączona sieć z ograniczonym dostępem. aplikacji; mapowane przez PANS mogą mieć ustawione ograniczone sieci OEM jako domyślne, więc nie trzeba ich używać uprawnienia do korzystania z nich. Gdy aplikacja ma ograniczony dostęp Sieć OEM przypisana jako sieć domyślna przez PANS. Może też wyraźnie wskazać sieć OEM, jeśli aplikacja na to zezwoli.

Sprawdź aplikację referencyjną

Dostarczono aplikację referencyjną (wraz z kodem) o nazwie NetworkPreferenceApp w kompilacjach motoryzacyjnych przeznaczonych do debugowania przez użytkownika i pokazuje, jak:

  • Wykorzystuj dane PANS.
  • Ustaw zasadę PANS.
  • Ustaw domyślną zasadę dla urządzenia.
  • Wyczyść zasadę.
  • Zastosuj zasadę podczas uruchamiania.
  • Używanie interfejsu Driver Distraction API (zobacz Wskazówki dotyczące rozpraszania uwagi kierowcy).
  • Dynamicznie aktualizuj Wi-Fi za pomocą urządzeń OEM_PAID i OEM_PRIVATE.

Rysunek 3. Aplikacja referencyjna

Dane

Aby ułatwić przejrzystość korzystania z danych, gromadzimy i tworzymy ilość danych przesyłanych przez Mapowania sieci OEM_PAID i OEM_PRIVATE.

Rozwiązywanie problemów

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

  • Połączenia dumpsys zawierają listę aktywnych połączeń domyślnych sieci dla poszczególnych aplikacji i powiązanych z nimi aplikacji (zmapowanych na podstawie numerów PANS).
  • Netd dumpsys obejmuje adres IP UID i reguły zapory sieciowej.
  • Netstats dumpsys zawiera dane PANS poszczególnych aplikacji. Na przykład informacje o tym, które aplikacje korzystały z której sieci OEM.

Wszystkie dane z aplikacji dumpsys są dostępne, jeśli utworzysz raport o błędzie z Androida.