I veicoli si affidano sempre più alla connettività per gestire l'elenco crescente di casi d'uso richiesti sia dagli OEM sia dai proprietari dei veicoli, con conseguente aumento dell'impronta dei dati e dei costi associati. Utilizza la funzionalità selezione della rete per applicazione (PANS) per indirizzare il traffico delle app specificate sulle reti pagate dall'OEM.
Con PANS, puoi gestire il volume e il costo dell'utilizzo dei dati e allo stesso tempo offrire un'esperienza di guida robusta, sicura e connessa. PANS:
- Consiste in una nuova API aggiunta a
ConnectivityManagerdisponibile solo per i dispositivi per auto. - Fornisce un'API per i suggerimenti sul Wi-Fi aggiornata (vedi API per i suggerimenti sul Wi-Fi per la connettività a internet) per includere il supporto per la modifica dinamica delle funzionalità di rete PANS.
- Raccoglie metriche di supporto.
- Fornisce un'app di riferimento.
Perché PANS?
PANS può:
- Aggiorna dinamicamente i mapping 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 dall'app alla rete per le reti gestite dall'OEM.
- L'accesso alla rete è sicuro e non può essere utilizzato in modo improprio tramite casi d'uso non previsti o app non autorizzate.
- Le modifiche ai mapping da app a rete 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 il traffico di rete al posto degli utenti:
- Gli aggiornamenti di sistema possono essere forniti all'utente senza costi.
- L'utilizzo della rete di app specifiche può essere fornito senza costi per l'utente.
- La telemetria e altre analisi possono essere gestite senza costi per l'utente.
- Gli OEM possono garantire che le app critiche rimangano connesse anche senza un piano dati a pagamento. Ad esempio, le funzionalità essenziali per la sicurezza, come mappe, assistente (guida a mani libere) e aggiornamenti di sistema, continuano a funzionare anche quando un utente non ha un piano dati.
- PANS fornisce un controllo più granulare 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.
Implementare PANS
Per implementare PANS, viene fornita una nuova API ConnectivityManager,
setOemNetworkPreference.
Questa nuova API mappa le app a un OemNetworkPreference.
Questa API è disponibile solo per i dispositivi per il settore automobilistico ed è annotata come
@SystemApi con una nuova autorizzazione signature.
OemNetworkPreference
OemNetworkPreference è un'astrazione di OEM_PAID e
OEM_PRIVATE NetworkCapabilities che mappa le app per nome del pacchetto
a una preferenza di rete. Le preferenze di rete consentono 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_PAIDUtilizzato principalmente per le app che possono essere indirizzate su reti OEM e non OEM.OEM_PRIVATEUtilizzato principalmente per le app OEM per ottenere l'accesso 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;
Chiamare le API PANS
Per utilizzare le API PANS:
- Utilizza
OemNetworkPreferencesper mappare un'app a una preferenza di rete. - Chiama
setOemNetworkPreferencecon l'oggettoOemNetworkPreferences. - Utilizza l'interfaccia
Runnableper rilevare 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 tra un avvio e l'altro e devono essere riapplicate a ogni avvio.
- Per creare una preferenza per un'app, non è necessario installarla. Pertanto, le preferenze di rete per le app disinstallate possono essere impostate in modo proattivo.
- 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. Questa è
la rete utilizzata quando un'app non ha specificato quali reti vuole utilizzare tramite
una delle API specializzate. In questo modo non solo vengono soddisfatte la maggior parte delle esigenze di connettività,
ma viene anche consentito l'utilizzo continuato di API specializzate come l'API
NetworkRequestper non interrompere i casi d'uso delle app esistenti. Ad esempio, quando un'app vuole eseguire un'operazione solo su una rete non a consumo, PANS non la costringe a utilizzare un'altra rete.
Configurare una rete
Quando utilizzi una preferenza di rete corrispondente, deve essere disponibile una rete con 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 una sovrapposizione di risorse, config_ethernet_interfaces.
Questo valore viene impostato al momento della 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 runtime.
Considera questi esempi:
- Una sovrapposizione di risorse denominata
config_ethernet_interfacesspecifica:- Il nome dell'interfaccia da configurare.
- I valori
NetworkCapabilitiesdesiderati.<!-- 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
WiFiNetworkSuggestionpuò 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);
Limitare l'accesso alle reti PANS
Se contrassegni una rete con le funzionalità OEM_PAID o OEM_PRIVATE, la rete viene contrassegnata come rete con limitazioni. Le reti con limitazioni
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 con accesso limitato a condizione che le app le richiedano esplicitamente. Tuttavia, queste app non avranno reti 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 di rete con limitazioni per utilizzarle. Quando un'app di questo tipo ha una rete OEM con limitazioni assegnata come rete predefinita da PANS, ha anche la possibilità di richiedere esplicitamente la rete OEM se l'app sceglie di farlo.
Rivedere l'app di riferimento
Un'app di riferimento (incluso il codice) denominata NetworkPreferenceApp viene fornita
nelle build automobilistiche di debug utente e mostra come:
- Utilizza le metriche PANS.
- Imposta il criterio PANS.
- Imposta una norma predefinita per il dispositivo.
- Cancella una policy.
- Applica una policy all'avvio.
- Utilizza l'API Driver Distraction (vedi Linee guida sulla distrazione del conducente).
- Aggiorna dinamicamente il Wi-Fi con
OEM_PAIDeOEM_PRIVATE.
Metriche
Per facilitare la trasparenza sull'utilizzo dei dati, vengono raccolte e rese disponibili metriche relative alla quantità di dati trasmessi tramite i mapping di rete OEM_PAID e OEM_PRIVATE.
Risoluzione dei problemi
La maggior parte delle condizioni di risoluzione dei problemi deriva dall'utilizzo di una rete errata da parte di un'app (nessuna connettività di rete) o dal superamento dei limiti di dati. Per attivare le risoluzioni rapide:
- Connettività
dumpsysinclude un elenco di reti predefinite per app attive e le relative app (mappate da PANS). - Netd
dumpsysinclude regole firewall e IP UID. - Netstats
dumpsysinclude le metriche PANS per app. Ad esempio, quali app hanno utilizzato quale rete OEM.
Tutti i dati di dumpsys sono disponibili creando un report bug di Android.