I veicoli si basano sempre più sulla connettività per gestire l'elenco crescente di casi d'uso richiesti sia dagli OEM sia dai proprietari di veicoli, con un 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 specifiche sulle reti pagate dall'OEM.
Con PANS, puoi gestire il volume e il costo dell'utilizzo dei dati, offrendo al contempo un'esperienza solida, sicura e connessa per le auto. PANS:
- Consiste in una nuova API aggiunta a
ConnectivityManager
disponibile solo per i dispositivi automotive. - Fornisce un'API di suggerimenti Wi-Fi aggiornata (vedi API di suggerimenti Wi-Fi per la connettività a 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:
- Aggiornare dinamicamente le mappature da app a rete.
- Gestisci il routing a livello di app senza apportare modifiche alle app.
- Solo le app consentite dall'OEM possono accedere alle reti OEM mappate.
- Gli sviluppatori di app non devono apportare modifiche per implementare questa funzionalità.
- Le metriche rivolte agli utenti monitorano l'utilizzo dei dati tra app e rete per le reti gestite dall'OEM.
- L'accesso alla rete è sicuro e non può essere utilizzato in modo improprio tramite casi d'uso indesiderati o app non autorizzate.
- Le modifiche alle mappature app-to-network PANS vengono comunicate agli utenti.
- La stessa configurazione di rete viene applicata a tutti gli utenti.
Vantaggi principali
PANS offre agli OEM i seguenti vantaggi principali:
- Gli OEM possono pagare per il traffico di rete anziché per gli utenti:
- Gli aggiornamenti di sistema possono essere forniti senza costi per l'utente.
- L'utilizzo della rete di app specifiche può essere fornito senza costi per l'utente.
- La telemetria e altri dati e analisi possono essere gestiti senza costi per l'utente.
- Gli OEM possono assicurarsi che le app critiche rimangano connesse anche senza un piano di dati pagato dall'utente. Ad esempio, le funzionalità di sicurezza critiche come mappe, assistente (guida con i comandi vocali) e aggiornamenti di sistema continuano a funzionare anche se un utente non ha un piano dati.
- PANS fornisce un'ulteriore granularità di controllo specifico per il routing del traffico di rete in Android. Ad esempio, gli OEM possono definire in modo ottimale una topologia di rete logica per il routing del traffico a livello di app.
Figura 1. Framework PANS
Implementare i PANS
Per implementare i PANS, viene fornita una nuova API ConnectivityManager
setOemNetworkPreference
.
Questa nuova API mappa le app a un OemNetworkPreference
.
Questa API è disponibile solo per i dispositivi automotive ed è annotata come @SystemApi
con una nuova autorizzazione signature
.
Figura 2. Implementare i PANS
OemNetworkPreference
OemNetworkPreference
è un'astrazione di OEM_PAID
e
OEM_PRIVATE
NetworkCapabilities
che mappa le app in base al nome del pacchetto
a una preferenza di rete. Le preferenze di rete consentono di creare gerarchie di rete.
Ad esempio, la mappatura di un'app alla preferenza OEM_NETWORK_PREFERENCE_OEM_PAID
comporta 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 la rete predefinita del sistema.
OEM_PAID
Utilizzato principalmente per le app che possono essere instradate sia su reti OEM sia su reti non OEM.OEM_PRIVATE
Utilizzato principalmente per le app OEM per accedere a una rete 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:
- Usa
OemNetworkPreferences
per mappare un'app a una preferenza di rete. - Chiama
setOemNetworkPreference
con l'oggettoOemNetworkPreferences
. - Utilizza l'interfaccia
Runnable
per ascoltare il completamento dell'API.
Ad 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 i PANS, tieni presente quanto segue:
- Le preferenze di rete non vengono mantenute durante gli avvii e devono essere applicate nuovamente 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.
- Un'app può essere mappata a una sola preferenza di rete alla volta.
- Le preferenze di rete vengono utilizzate per impostare la rete predefinita di un'app. Si tratta della rete utilizzata quando un'app non ha specificato le reti che vuole utilizzare tramite una delle API specializzate. Non solo copre la maggior parte delle esigenze di connettività, ma consente anche di continuare a utilizzare API specializzate come l'API
NetworkRequest
in modo da non interrompere i casi d'uso delle app esistenti. Ad esempio, quando un'app vuole eseguire un'operazione solo su una rete senza misurazione, PANS non la forza a utilizzare un'altra rete.
Configurare una rete
Quando utilizzi una preferenza di rete corrispondente, deve essere disponibile una rete con le funzionalità OEM_PAID
o OEM_PRIVATE
. Android supporta la configurazione delle funzionalità per le reti Ethernet e Wi-Fi. Per le reti Ethernet, puoi utilizzare un overlay delle risorse, config_ethernet_interfaces
.
Questo valore 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 valore può essere modificato in fase di esecuzione.
Considera questi esempi:
- Un overlay della risorsa denominato
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
Il tagging di una rete con le funzionalità OEM_PAID
o OEM_PRIVATE
la contrassegna come rete con limitazioni. Le reti con limitazioni
possono essere utilizzate solo dalle app che dispongono dell'autorizzazioneCONNECTIVITY_USE_RESTRICTED_NETWORKS
, controllata dagli OEM.
Le app con questa autorizzazione possono utilizzare reti con limitazioni se le richiedono esplicitamente. Tuttavia, queste app non avranno le emittenti con limitazioni come impostazione predefinita. Le app mappate tramite PANS possono avere reti OEM con limitazioni impostate come predefinite e non avranno bisogno dell'autorizzazione per le reti con limitazioni per utilizzarle. Quando a un'app viene assegnata una rete OEM limitata come rete predefinita da PANS, l'app ha anche la possibilità di richiedere esplicitamente la rete OEM in questione, se lo desidera.
Esamina l'app di riferimento
Nelle build per il debug dell'utente per i veicoli è fornita un'app di riferimento (incluso il codice) denominata NetworkPreferenceApp
che mostra come:
- Utilizza le metriche PANS.
- Imposta il criterio PANS.
- Imposta un criterio predefinito per il dispositivo.
- Cancella una norma.
- Applica un criterio all'avvio.
- Utilizza l'API Driver Distraction (Distrazione alla guida) (consulta le linee guida sulla distrazione alla guida).
- Aggiornare dinamicamente il Wi-Fi con
OEM_PAID
eOEM_PRIVATE
.
Figura 3. App di riferimento
Metriche
Per garantire la trasparenza sull'utilizzo dei dati, vengono raccolte e messe a disposizione le metriche relative alla quantità di dati trasmessi tramite le mappature di rete OEM_PAID
e OEM_PRIVATE
.
Risoluzione dei problemi
La maggior parte delle condizioni di risoluzione dei problemi si verifica quando un'app utilizza la rete sbagliata (nessuna connettività di rete) o quando si verificano superamenti dei limiti di dati. Per attivare le risoluzioni rapide:
- Connettività
dumpsys
include un elenco di reti predefinite per app attive e delle relative app associate (mappate da PANS). - Netd
dumpsys
include regole firewall e UID IP. - Netstats
dumpsys
include le metriche PANS per app. Ad esempio, quali app hanno utilizzato la rete di un OEM.
Tutti i dati di dumpsys
sono disponibili creando un report di bug Android.