I veicoli si affidano sempre più alla connettività per gestire l'elenco crescente di casi d'uso richiesti sia dagli OEM che dai proprietari dei veicoli, con conseguente aumento dell'impronta dei dati e dei costi associati. Utilizzare la funzione di selezione della rete per applicazione (PANS) per instradare il traffico di applicazioni specifiche su reti pagate dall'OEM.
Con PANS, puoi gestire il volume e il costo dell'utilizzo dei dati fornendo allo stesso tempo un'esperienza in auto solida, sicura e connessa. PENTOLE:
- Consiste in una nuova API aggiunta a
ConnectivityManager
disponibile solo per i dispositivi automobilistici. - Fornisce un'API di suggerimento Wi-Fi aggiornata (consulta 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'applicazione di riferimento.
Perché PAN?
PANS può:
- Aggiorna dinamicamente le mappature da applicazione a rete.
- Gestisci il routing a livello di applicazione senza apportare modifiche alle app.
- Solo le applicazioni consentite dagli OEM possono accedere alle reti OEM mappate.
- Gli sviluppatori di applicazioni non devono apportare modifiche per implementare questa funzionalità.
- Le metriche rivolte agli utenti tengono traccia dell'utilizzo dei dati da applicazione a rete per le reti gestite da OEM.
- L'accesso alla rete è sicuro e non può essere abusato attraverso casi d'uso non previsti o applicazioni non autorizzate.
- Le modifiche alle mappature dell'applicazione PANS sulla rete vengono comunicate agli utenti.
- La stessa configurazione di rete viene applicata a tutti gli utenti.
Vantaggi principali
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 gratuitamente per l'utente.
- L'utilizzo della rete di app specificate può essere fornito gratuitamente per l'utente.
- La telemetria e altre analisi possono essere gestite senza alcun costo per l'utente.
- Gli OEM possono garantire che le applicazioni critiche rimangano connesse anche senza un piano dati a carico dell'utente. Ad esempio, le funzioni critiche per la sicurezza come mappe, assistente (guida a mani libere) e aggiornamenti del sistema continuano a funzionare anche quando un utente non ha un piano dati.
- PANS fornisce un'ulteriore granularità di controllo specifica per il routing 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 applicazione.
Figura 1 . quadro PANS
Implementazione PANS
Per implementare PANS, viene fornita una nuova API ConnectivityManager
, setOemNetworkPreference
. Questa nuova API associa le applicazioni a una OemNetworkPreference
. Questa API è disponibile solo per i dispositivi automobilistici ed è annotata come @SystemApi
con una nuova autorizzazione di signature
.
Figura 2. Implementare PANS
Preferenza di rete OEM
OemNetworkPreference
è un'astrazione su OEM_PAID
e OEM_PRIVATE
NetworkCapabilities
che mappano le app in base al nome del pacchetto a una preferenza di rete . Le preferenze di rete consentono le gerarchie di rete. Ad esempio, il mapping di un'app alla preferenza OEM_NETWORK_PREFERENCE_OEM_PAID
comporterà la seguente priorità di reti predefinite assegnate a un'app: utilizzare prima una rete UNMETERED
, se UNMETERED
non è disponibile utilizzare una rete OEM_PAID
e se OEM_PAID
non è disponibile, utilizzare il sistema rete predefinita.
-
OEM_PAID
Utilizzato principalmente per app che possono essere instradate su reti OEM e non OEM. -
OEM_PRIVATE
Utilizzato principalmente per le app OEM per accedere 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;
Chiamare le API PANS
Per utilizzare le API PANS:
- Usa
OemNetworkPreferences
per mappare un'app a una preferenza di rete. - Chiama
setOemNetworkPreference
con l'oggettoOemNetworkPreferences
. - Usa l'interfaccia
Runnable
per ascoltare 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 a mente i seguenti punti:
- Le preferenze di rete non vengono mantenute tra gli stivali e dovranno essere riapplicate a ogni avvio.
- Per creare una preferenza per un'applicazione, non è necessario installarla. 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'applicazione. Questa è la rete utilizzata quando un'applicazione non ha specificato quali reti desidera utilizzare tramite una delle API specializzate. Questo 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.
Configurazione di una rete
Quando si utilizza una preferenza di rete corrispondente, deve essere disponibile una rete con le funzionalità OEM_PAID
o OEM_PRIVATE
. Android fornisce supporto per la configurazione delle funzionalità per reti Ethernet e Wi-Fi. Per le reti Ethernet, puoi utilizzare un overlay di risorse, config_ethernet_interfaces
. Questo è impostato in fase di compilazione.
Per il Wi-Fi, l'API WifiNetworkSuggestion
può essere utilizzata con le nuove API di 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);
Limitazione dell'accesso alle reti PANS
Contrassegnare una rete con le funzionalità OEM_PAID
o OEM_PRIVATE
contrassegna quella rete come una rete con restrizioni . Le reti con restrizioni possono essere utilizzate solo da app che dispongono dell'autorizzazione CONNECTIVITY_USE_RESTRICTED_NETWORKS
, che è controllata dagli OEM.
Le app con questa autorizzazione possono utilizzare reti limitate a condizione che le app le richiedano esplicitamente . Tuttavia, queste app non riceveranno 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 usarle. 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.
Revisione dell'app di riferimento
Un'app di riferimento (incluso il codice) denominata NetworkPreferenceApp
viene fornita nelle build automobilistiche di debug degli utenti e mostra come:
- Consuma le metriche PANS.
- Imposta la politica PANS.
- Imposta un criterio predefinito per il dispositivo.
- Cancella una politica.
- Applicare una politica all'avvio.
- Utilizzare 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 tramite le mappature di rete OEM_PAID
e OEM_PRIVATE
.
Risoluzione dei problemi
La maggior parte delle condizioni di risoluzione dei problemi deriva da un'applicazione che utilizza la rete errata (nessuna connettività di rete) o da un eccesso di dati. Per abilitare risoluzioni rapide:
- Connectivity
dumpsys
include un elenco di reti predefinite per app attive e le relative applicazioni associate (mappate da PANS). - Netd
dumpsys
include l'IP UID e le regole del firewall. - Netstats
dumpsys
include metriche PANS per applicazione. Ad esempio, quali applicazioni hanno utilizzato quale rete OEM.
Tutti i dati di dumpsys
sono disponibili creando una segnalazione di bug Android.