Selezione della rete per applicazione (PANS)

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:

  1. 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.
  2. 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.
  3. 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:

  1. Usa OemNetworkPreferences per mappare un'app a una preferenza di rete.
  2. Chiama setOemNetworkPreference con il OemNetworkPreferences .
  3. 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:

  1. 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>
      
  2. 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 e OEM_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.