I veicoli fanno sempre più affidamento sulla connettività per gestire il crescente elenco di casi d’uso richiesti sia dagli OEM che dai proprietari dei veicoli, con conseguente aumento dell’impronta di dati e dei costi associati. Utilizza la funzionalità di selezione della rete per applicazione (PANS) per instradare il traffico di app specificate su reti pagate dall'OEM.
Con PANS puoi gestire il volume e il costo dell'utilizzo dei dati fornendo allo stesso tempo un'esperienza di guida solida, sicura e connessa. PADELLE:
- È costituito da una nuova API aggiunta a
ConnectivityManager
disponibile solo per i dispositivi automobilistici. - Fornisce un'API di suggerimento Wi-Fi aggiornata (vedi API di suggerimento Wi-Fi per la connettività Internet ) per includere il supporto per la modifica dinamica delle funzionalità di rete PANS.
- Raccoglie le metriche di supporto.
- Fornisce un'app di riferimento.
Perchè PANS?
I PAN possono:
- Aggiorna dinamicamente le mappature tra app e rete.
- Gestisci il routing a livello di app senza apportare modifiche alle app.
- Solo le app consentite dagli OEM possono accedere alle reti OEM mappate.
- Gli sviluppatori di app non devono apportare alcuna modifica per implementare questa funzionalità.
- Le metriche rivolte agli utenti tengono traccia dell'utilizzo dei dati dall'app alla rete per le reti gestite dagli OEM.
- L'accesso alla rete è sicuro e non può essere utilizzato in modo improprio attraverso casi d'uso non previsti o app non autorizzate.
- Le modifiche alle mappature tra app PANS e rete vengono comunicate agli utenti.
- La stessa configurazione di rete viene applicata a tutti gli utenti.
Vantaggi fondamentali
PANS offre agli OEM questi vantaggi fondamentali:
- Gli OEM possono pagare per il traffico di rete anziché per gli utenti:
- Gli aggiornamenti di sistema possono essere forniti senza alcun costo per l'utente.
- L'utilizzo della rete di app specifiche può essere fornito gratuitamente all'utente.
- La telemetria e altre analisi possono essere gestite senza alcun costo per l'utente.
- Gli OEM possono garantire che le app critiche rimangano connesse anche senza un piano dati a carico dell'utente. Ad esempio, funzionalità critiche per la sicurezza come mappe, assistente (guida a mani libere) e aggiornamenti di sistema continuano a funzionare anche quando un utente non dispone di un piano dati.
- PANS fornisce un'ulteriore granularità di controllo specifica per l'instradamento del traffico di rete in Android. Ad esempio, gli OEM possono definire in modo ottimale una topologia di rete logica per l'instradamento del traffico a livello di app.
Figura 1 . Quadro PANS
Implementare PANS
Per implementare PANS, viene fornita una nuova API ConnectivityManager
, setOemNetworkPreference
. Questa nuova API mappa le app su un OemNetworkPreference
. Questa API è disponibile solo per i dispositivi automobilistici ed è annotata come @SystemApi
con una nuova autorizzazione signature
.
Figura 2. Implementazione PANS
Preferenza rete Oem
OemNetworkPreference
è un'astrazione su OEM_PAID
e OEM_PRIVATE
NetworkCapabilities
che mappa le app in base al nome del pacchetto su una preferenza di rete . Le preferenze di rete consentono gerarchie di rete. Ad esempio, mappando un'app alla preferenza OEM_NETWORK_PREFERENCE_OEM_PAID
si ottiene la seguente priorità delle reti predefinite assegnate a un'app: utilizza prima una rete UNMETERED
, se UNMETERED
non è disponibile utilizza una rete OEM_PAID
e se OEM_PAID
non è disponibile, utilizza l'impostazione predefinita del sistema rete.
-
OEM_PAID
Utilizzato principalmente per le app che possono essere instradate sia su reti OEM che non OEM. -
OEM_PRIVATE
Utilizzato principalmente per le app OEM per ottenere l'accesso a una rete a loro dedicata.
/** * 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;
Chiama le API PANS
Per utilizzare le API PANS:
- Utilizza
OemNetworkPreferences
per mappare un'app a una preferenza di rete. - Chiama
setOemNetworkPreference
con l'oggettoOemNetworkPreferences
. - Utilizza l'interfaccia
Runnable
per attendere il completamento dell'API.
Per esempio:
// 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);
Considerazioni
Quando implementi PANS, tieni presente i seguenti punti:
- Le preferenze di rete non vengono mantenute tra gli avvii e devono essere riapplicate a ogni avvio.
- Per creare una preferenza per un'app, non è necessario che sia installata. Pertanto, le preferenze di rete per le app disinstallate possono essere impostate in modo proattivo.
- In qualsiasi momento, un'app può essere mappata solo su una singola preferenza di rete.
- Le preferenze di rete vengono utilizzate per impostare la rete predefinita di un'app. Questa è la rete utilizzata quando un'app non ha specificato quali reti desidera utilizzare tramite una delle API specializzate. Ciò non solo copre la stragrande maggioranza delle esigenze di connettività, ma consente anche l'uso continuato di API specializzate come l'API
NetworkRequest
in modo da non interrompere i casi d'uso delle app esistenti. Ad esempio, quando un'app desidera eseguire un'operazione solo su una rete illimitata, PANS non la costringerà a utilizzare un'altra rete.
Configura una rete
Quando si utilizza una preferenza di rete corrispondente deve essere disponibile una rete con funzionalità OEM_PAID
o OEM_PRIVATE
. Android fornisce supporto per la configurazione delle funzionalità per le reti Ethernet e Wi-Fi. Per le reti Ethernet, è possibile utilizzare un overlay di risorse, config_ethernet_interfaces
. Questo viene impostato in fase di compilazione.
Per il Wi-Fi, l'API WifiNetworkSuggestion
può essere utilizzata con le nuove API Android 12, setOemPaid(Boolean)
e setOemPrivate(Boolean)
. Questo può essere modificato in fase di esecuzione.
Considera questi esempi:
- Una sovrapposizione di risorse denominata
config_ethernet_interfaces
specifica:- Il nome dell'interfaccia da configurare.
- I valori
NetworkCapabilities
desiderati.<!-- 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>
- Questo
WiFiNetworkSuggestion
può essere modificato dinamicamente:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Limitare l'accesso alle reti PANS
Contrassegnare una rete con le funzionalità OEM_PAID
o OEM_PRIVATE
contrassegna la rete come rete con restrizioni . Le reti limitate possono essere utilizzate solo dalle app che dispongono dell'autorizzazione CONNECTIVITY_USE_RESTRICTED_NETWORKS
, controllata dagli OEM.
Le app con questa autorizzazione possono utilizzare reti limitate a condizione che le app lo richiedano esplicitamente . Tuttavia, queste app non avranno reti limitate come impostazione predefinita. Le app mappate tramite PANS possono avere reti OEM limitate impostate come predefinite e non avranno bisogno dell'autorizzazione di rete limitata per utilizzarle. Quando un'app di questo tipo ha una rete OEM limitata assegnata come rete predefinita da PANS, ha anche la possibilità di richiedere esplicitamente detta rete OEM se l'app sceglie di farlo.
Esamina l'app di riferimento
Un'app di riferimento (incluso il codice) denominata NetworkPreferenceApp
viene fornita nelle build automobilistiche di debug dell'utente e dimostra come:
- Utilizza metriche PANS.
- Imposta la policy PANS.
- Imposta una policy predefinita per il dispositivo.
- Cancellare una politica.
- Applicare una policy all'avvio.
- Utilizza l'API Driver Distraction (vedi Linee guida per la distrazione del conducente ).
- Aggiorna dinamicamente il Wi-Fi con
OEM_PAID
eOEM_PRIVATE
.
Figura 3. App di riferimento
Metrica
Per facilitare la trasparenza sull'utilizzo dei dati, vengono raccolte e rese disponibili metriche relative alla quantità di dati trasmessi sulle mappature di rete OEM_PAID
e OEM_PRIVATE
.
Risoluzione dei problemi
La maggior parte delle condizioni di risoluzione dei problemi deriva da un'app che utilizza la rete sbagliata (nessuna connettività di rete) o da un eccesso di dati. Per abilitare risoluzioni rapide:
-
dumpsys
di connettività include un elenco di reti predefinite attive per app e le relative app associate (mappate da PANS). - Netd
dumpsys
include l'IP UID e le regole del firewall. - Netstats
dumpsys
include metriche PANS per app. Ad esempio, quali app hanno utilizzato quale rete OEM.
Tutti i dati dumpsys
sono disponibili creando una segnalazione di bug Android.