Los vehículos confían cada vez más en la conectividad para administrar la creciente lista de casos de uso solicitados tanto por los OEM como por los propietarios de vehículos, lo que da como resultado una mayor huella de datos y costos asociados. Utilice la función Selección de red por aplicación (PANS) para enrutar el tráfico de aplicaciones específicas en redes pagadas por el OEM.
Con PANS, puede administrar el volumen y el costo del uso de datos al mismo tiempo que brinda una experiencia de automóvil robusta, segura y conectada. SARTENES:
- Consiste en una nueva API agregada a
ConnectivityManager
disponible solo para dispositivos automotrices. - Proporciona una API de sugerencia de Wi-Fi actualizada (consulte API de sugerencia de Wi-Fi para conectividad a Internet) para incluir soporte para cambiar dinámicamente las capacidades de la red PANS.
- Recopila métricas de apoyo.
- Proporciona una aplicación de referencia.
¿Por qué PANS?
PANS puede:
- Actualice dinámicamente las asignaciones de aplicación a red.
- Administre el enrutamiento a nivel de aplicación sin realizar cambios en las aplicaciones.
- Solo las aplicaciones autorizadas por OEM pueden acceder a las redes OEM asignadas.
- Los desarrolladores de aplicaciones no necesitan hacer ningún cambio para implementar esta característica.
- Las métricas orientadas al usuario rastrean el uso de datos de aplicación a red para redes administradas por OEM.
- El acceso a la red es seguro y no se puede abusar a través de casos de uso no deseado o aplicaciones no autorizadas.
- Los cambios en las asignaciones de aplicación a red de PANS se comunican a los usuarios.
- La misma configuración de red se aplica a todos los usuarios.
Ventajas principales
PANS brinda a los OEM estas ventajas principales:
- Los OEM pueden pagar por el tráfico de red en lugar de los usuarios:
- Las actualizaciones del sistema se pueden proporcionar sin costo alguno para el usuario.
- El uso de la red de aplicaciones específicas se puede proporcionar sin costo alguno para el usuario.
- La telemetría y otros análisis se pueden administrar sin costo para el usuario.
- Los OEM pueden garantizar que las aplicaciones críticas permanezcan conectadas incluso sin un plan de datos pagado por el usuario. Por ejemplo, las funciones críticas para la seguridad, como mapas, asistente (conducción con manos libres) y actualizaciones del sistema, continúan funcionando incluso cuando el usuario no tiene un plan de datos.
- PANS proporciona granularidad adicional de control específico para el enrutamiento del tráfico de red en Android. Por ejemplo, los OEM pueden definir de manera óptima una topología de red lógica para el enrutamiento del tráfico a nivel de aplicación.
Figura 1 . Marco PANS
Implementando PANS
Para implementar PANS, se proporciona una nueva API de ConnectivityManager
, setOemNetworkPreference
. Esta nueva API asigna aplicaciones a una OemNetworkPreference
. Esta API está disponible solo para dispositivos automotrices y se anota como @SystemApi
con un nuevo permiso de signature
.
Figura 2. Implementar PANS
Preferencia de red OEM
OemNetworkPreference
es una abstracción sobre OEM_PAID
y OEM_PRIVATE
NetworkCapabilities
asignando aplicaciones por nombre de paquete a una preferencia de red . Las preferencias de red permiten jerarquías de red. Por ejemplo, asignar una aplicación a la preferencia OEM_NETWORK_PREFERENCE_OEM_PAID
dará como resultado la siguiente prioridad de las redes predeterminadas asignadas a una aplicación: use primero una red SIN OEM_PAID
OEM_PAID
UNMETERED
UNMETERED
disponible, use el sistema red predeterminada.
-
OEM_PAID
Se utiliza principalmente para aplicaciones que se pueden enrutar tanto en redes OEM como no OEM. -
OEM_PRIVATE
Se utiliza principalmente para que las aplicaciones OEM obtengan acceso a una red dedicada a ellas.
/** * 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;
Llamar a las API de PANS
Para usar las API de PANS:
- Utilice
OemNetworkPreferences
para asignar una aplicación a una preferencia de red. - Llame a
setOemNetworkPreference
con el objetoOemNetworkPreferences
. - Use la interfaz
Runnable
para escuchar la finalización de la API.
Por ejemplo:
// 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);
Consideraciones
Al implementar PANS, tenga en cuenta los siguientes puntos:
- Las preferencias de red no se conservan entre los arranques y deberán volver a aplicarse en cada arranque.
- Para crear una preferencia para una aplicación, no es necesario que esté instalada. Por lo tanto, las preferencias de red para las aplicaciones desinstaladas se pueden configurar de manera proactiva.
- En un momento dado, una aplicación solo se puede asignar a una única preferencia de red.
- Las preferencias de red se utilizan para establecer la red predeterminada de una aplicación. Esta es la red que se usa cuando una aplicación no ha especificado qué red(es) quiere usar a través de una de las API especializadas. Esto no solo cubre la gran mayoría de las necesidades de conectividad, sino que también permite el uso continuo de API especializadas, como la API
NetworkRequest
, para no interrumpir los casos de uso de aplicaciones existentes. Por ejemplo, cuando una aplicación solo quiere realizar una operación en una red sin medidor, PANS no la obligará a usar otra red.
Configuración de una red
Una red con las capacidades OEM_PAID
u OEM_PRIVATE
debe estar disponible cuando se utiliza una preferencia de red correspondiente. Android brinda soporte para la configuración de capacidades para redes Ethernet y Wi-Fi. Para redes Ethernet, puede usar una superposición de recursos, config_ethernet_interfaces
. Esto se establece en tiempo de compilación.
Para Wi-Fi, la API WifiNetworkSuggestion
se puede usar con las nuevas API de Android 12, setOemPaid(Boolean)
y setOemPrivate(Boolean)
. Esto se puede cambiar en tiempo de ejecución.
Considere estos ejemplos:
- Una superposición de recursos denominada
config_ethernet_interfaces
especifica:- El nombre de la interfaz a configurar.
- Los valores deseados
NetworkCapabilities
.<!-- 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>
- Esta
WiFiNetworkSuggestion
se puede cambiar dinámicamente:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Restricción del acceso a las redes PANS
Etiquetar una red con las capacidades OEM_PAID
u OEM_PRIVATE
marca esa red como una red restringida . Las redes restringidas solo pueden ser utilizadas por aplicaciones que tengan el permiso CONNECTIVITY_USE_RESTRICTED_NETWORKS
, que está controlado por los OEM.
Las aplicaciones con este permiso pueden usar redes restringidas siempre que las aplicaciones las soliciten explícitamente . Sin embargo, estas aplicaciones no obtendrán redes restringidas como predeterminadas. Las aplicaciones mapeadas a través de PANS pueden tener redes OEM restringidas configuradas como predeterminadas y no necesitarán el permiso de red restringida para usarlas. Cuando dicha aplicación tiene una red OEM restringida asignada como su red predeterminada por PANS, también tiene la capacidad de solicitar explícitamente dicha red OEM si la aplicación decide hacerlo.
Revisar la aplicación de referencia
Se proporciona una aplicación de referencia (incluido el código) denominada NetworkPreferenceApp
en las compilaciones automotrices de depuración del usuario y demuestra cómo:
- Consumir métricas de PANS.
- Establecer la política de PANS.
- Establezca una política predeterminada para el dispositivo.
- Borrar una política.
- Aplicar una política en el arranque.
- Use la API de distracción del conductor (consulte las Pautas de distracción del conductor).
- Actualice dinámicamente Wi-Fi con
OEM_PAID
yOEM_PRIVATE
.
Figura 3. Aplicación de referencia
Métrica
Para facilitar la transparencia en torno al uso de datos, las métricas se recopilan y ponen a disposición con respecto a la cantidad de datos transmitidos a través de las asignaciones de red OEM_PAID
y OEM_PRIVATE
.
Solución de problemas
La mayoría de las condiciones de solución de problemas surgen de una aplicación que usa la red incorrecta (sin conectividad de red) o de excesos de datos. Para habilitar resoluciones rápidas:
- Connectivity
dumpsys
incluye una lista de redes activas predeterminadas por aplicación y sus aplicaciones asociadas (asignadas desde PANS). - Netd
dumpsys
incluye IP UID y reglas de firewall. - Netstats
dumpsys
incluye métricas por aplicación de PANS. Por ejemplo, qué aplicaciones usaron qué red OEM.
Todos los datos de dumpsys
están disponibles al crear un informe de errores de Android.