I veicoli fanno sempre più affidamento sulla connettività per gestire l'elenco in continuo aumento di casi d'uso richiesti sia dagli OEM che dai proprietari di veicoli, con un conseguente aumento l'impronta di dati e i costi associati. Utilizza la selezione della rete per applicazione (PANS) per instradare il traffico di app specifiche sulle reti a pagamento dall'OEM.
Con i PANS, puoi gestire il volume e il costo dell'utilizzo dei dati contemporaneamente che offre un'esperienza di auto solida, sicura e connessa. PANORAMICA:
- Composto da una nuova API aggiunta a
ConnectivityManager
disponibile solo ai dispositivi automobilistici. - Fornisce un'API di suggerimento Wi-Fi aggiornata (vedi API di suggerimento Wi-Fi per la connettività a internet) per includere il supporto della modifica dinamica delle funzionalità di rete PANS.
- Raccoglie le metriche di supporto.
- Fornisce un'app di riferimento.
Perché i PAN?
I PANS possono:
- Aggiorna dinamicamente le mappature tra app e rete.
- Gestisci il routing a livello di app senza apportare modifiche alle app.
- Solo le app autorizzate dagli OEM possono accedere alle reti OEM mappate.
- Gli sviluppatori di app non devono apportare modifiche per implementare questa funzionalità.
- Le metriche rivolte agli utenti tracciano l'utilizzo dei dati da app a rete per gli account gestiti dall'OEM reti.
- L'accesso alla rete è sicuro e non può essere utilizzato in modo illecito tramite casi d'uso involontari o app non autorizzate.
- Le modifiche alle mappature PANS tra app e rete vengono comunicate agli utenti.
- La stessa configurazione di rete viene applicata a tutti gli utenti.
Vantaggi principali
PANS offre agli OEM i seguenti vantaggi fondamentali:
- Gli OEM possono pagare per il traffico di rete anziché per gli utenti:
- Gli aggiornamenti di sistema possono essere forniti all'utente senza costi aggiuntivi.
- L'utilizzo della rete di app specifiche può essere fornito senza costi all'utente.
- La telemetria e altre analisi possono essere gestite senza costi per l'utente.
- Gli OEM possono fare in modo che le app più importanti restino connesse anche senza una a carico dell'utente. Ad esempio, funzionalità critiche per la sicurezza come mappe, assistente (guida a mani libere) e gli aggiornamenti di sistema continuano a funzionare anche quando un utente non ha un piano dati.
- I dati PANS forniscono un livello di controllo più granulare specifico per il traffico di rete il routing in Android. Ad esempio, gli OEM possono definire in modo ottimale una rete logica per il routing del traffico a livello di app.
Figura 1. Framework PANS
Implementare i PANS
Per implementare PANS, una nuova API ConnectivityManager
,
setOemNetworkPreference
, è stato fornito.
Questa nuova API mappa le app a un OemNetworkPreference
.
Questa API è disponibile solo per i dispositivi automobilistici ed è annotata come
@SystemApi
con una nuova autorizzazione signature
.
Figura 2. Implementare i PANS
Preferenza rete OEM
OemNetworkPreference
è un'astrazione rispetto a OEM_PAID
e
OEM_PRIVATE
NetworkCapabilities
di app con mappatura per nome del pacchetto
a una preferenza di rete. Le preferenze di rete consentono le gerarchie di rete.
Ad esempio, mappare un'app alla preferenza OEM_NETWORK_PREFERENCE_OEM_PAID
ottiene la seguente priorità delle reti predefinite assegnate a un'app: utilizza un
prima la rete UNMETERED
, se UNMETERED
non è disponibile usa un
OEM_PAID
e, se OEM_PAID
non è disponibile, utilizza il sistema
rete predefinita.
OEM_PAID
Utilizzata principalmente per le app che possono essere indirizzate su entrambi Reti OEM e non OEM.OEM_PRIVATE
Utilizzata principalmente per consentire alle app OEM di accedere a un 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 ilOemNetworkPreferences
. - 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 PAN, tieni presente quanto segue:
- Le preferenze di rete non sono persistenti tra gli avvii e devono essere riapplicate a ogni avvio.
- Per creare una preferenza per un'app, non è necessario installarla. Pertanto, la rete le preferenze per le app disinstallate possono essere impostate proattivamente.
- In un determinato momento, un'app può essere mappata a una sola preferenza di rete.
- Le preferenze di rete vengono utilizzate per impostare la rete predefinita di un'app. Questo è
la rete utilizzata quando un'app non ha specificato le reti da usare
una delle API specializzate. Non solo copre la stragrande maggioranza delle esigenze di connettività,
consente inoltre l'uso continuato di API specializzate come l'API
NetworkRequest
in modo da non interrompere i casi d'uso esistenti delle app. Ad esempio, quando un'app vuole eseguire solo su una rete unmetered, PANS non lo costringerà a utilizzare un'altra rete.
Configurare una rete
Una rete con OEM_PAID
o OEM_PRIVATE
le funzionalità devono essere disponibili quando si utilizza una preferenza di rete corrispondente. Android
fornisce il supporto per la configurazione delle funzionalità per le reti Ethernet e Wi-Fi. Per
Reti Ethernet, puoi utilizzare un overlay di risorse, config_ethernet_interfaces
.
Questo valore viene impostato al momento della compilazione.
Per il Wi-Fi, è possibile utilizzare l'API WifiNetworkSuggestion
con la nuova
API Android 12, setOemPaid(Boolean)
e
setOemPrivate(Boolean)
. Questa opzione può essere modificata in fase di runtime.
Considera questi esempi:
- Un overlay di risorsa denominato
config_ethernet_interfaces
specifica:- Il nome dell'interfaccia da configurare.
- I valori di
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 valore
WiFiNetworkSuggestion
può essere modificato in modo dinamico:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Limita l'accesso alle reti PANS
Tagging di una rete con OEM_PAID
o OEM_PRIVATE
contrassegna quella rete come rete con restrizioni. Reti con limitazioni
può essere utilizzato solo dalle app con
CONNECTIVITY_USE_RESTRICTED_NETWORKS
, controllata dagli OEM.
Le app con questa autorizzazione possono usare reti limitate a condizione che le app lo richiedano esplicitamente . Tuttavia, queste app non avranno reti con limitazioni per impostazione predefinita. App mappate tramite PANS possono avere reti OEM con restrizioni impostate come predefinite e non l'autorizzazione alla rete con restrizioni per usarli. Quando un'app di questo tipo presenta restrizioni OEM assegnata come rete predefinita da PANS, ha anche la possibilità di richiedere esplicitamente la suddetta rete OEM, se l'app sceglie di farlo.
Esamina l'app di riferimento
Viene fornita un'app di riferimento (con codice) denominata NetworkPreferenceApp
nelle build di automotive di debug dell'utente e dimostra come:
- Utilizza le metriche PANS.
- Imposta il criterio PANS.
- Imposta un criterio predefinito per il dispositivo.
- Cancella un criterio.
- Applica un criterio all'avvio.
- Utilizzare l'API Driver Distraction (consulta le linee guida sulla distrazione del conducente).
- Aggiorna in modo dinamico il Wi-Fi con
OEM_PAID
eOEM_PRIVATE
.
Figura 3. App di riferimento
Metriche
Per facilitare la trasparenza sull'utilizzo dei dati, le metriche vengono raccolte e create
disponibili per quanto riguarda la quantità di dati trasmessi
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 errata (nessuna connettività di rete) o eccesso di dati. Per attivare le risoluzioni rapide:
- La connettività
dumpsys
include un elenco di reti predefinite per app e le relative app associate (mappate in base ai PANS). - Netd
dumpsys
include l'IP dell'UID e le regole del firewall. - Netstats
dumpsys
include metriche PANS per app. Ad esempio, quali app hanno utilizzato una rete specifica dell'OEM.
Tutti i dati di dumpsys
sono disponibili creando una segnalazione di bug di Android.