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:
- 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.
- 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.
- 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_PAID
i OEM_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_PAID
Uż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:
- Użyj
OemNetworkPreferences
, aby zmapować aplikację z ustawieniem sieci. - Wywołaj funkcję
setOemNetworkPreference
z obiektemOemNetworkPreferences
. - 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)
i setOemPrivate(Boolean)
. Można je zmienić w czasie działania.
Oto przykłady:
- 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>
- 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
iOEM_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_PAID
i OEM_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.