Los vehículos dependen cada vez más de la conectividad para administrar la creciente lista de casos de uso solicitados por los OEM y los propietarios de los vehículos, lo que ocasionó un aumento la huella de datos y los costos asociados. Usa la selección de red por aplicación (PANS) para enrutar el tráfico de apps específicas en redes pagadas por el OEM.
Con PANS, puedes administrar el volumen y el costo del uso de datos a la vez que lo que brinda una experiencia de vehículo sólida, segura y conectada. PANS:
- Consiste en una nueva API que se agregó a
ConnectivityManager
disponible solo a dispositivos de la industria automotriz. - Proporciona una API de sugerencia de Wi-Fi actualizada (consulta API de sugerencia de Wi-Fi para la conectividad a Internet) para incluir compatibilidad con capacidades de red PANS que cambian de forma dinámica.
- Recopila métricas complementarias.
- Proporciona una app de referencia.
¿Por qué usar PANS?
Los PANS pueden:
- Actualiza de forma dinámica las asignaciones de app a red.
- Administrar el enrutamiento a nivel de la aplicación sin realizar cambios en las aplicaciones
- Solo las apps permitidas por OEM pueden acceder a las redes de OEM asignadas.
- Los desarrolladores de apps no necesitan hacer ningún cambio para implementar esta función.
- Las métricas del usuario hacen un seguimiento del uso de datos de app a red para las cuentas administradas por OEM redes.
- El acceso a la red es seguro y no se puede abusar de él en casos de uso no deseados o aplicaciones no autorizadas.
- Los cambios en las asignaciones de app a red de PANS se comunican a los usuarios.
- Se aplica la misma configuración de red a todos los usuarios.
Ventajas principales
PANS les brinda a los OEM las siguientes ventajas principales:
- Los OEMs pueden pagar por tráfico de red en lugar de por usuarios:
- El usuario puede proporcionar actualizaciones del sistema sin costo.
- El uso de red de las apps específicas se puede proporcionar sin costo al usuario.
- La telemetría y otras estadísticas se pueden administrar sin costo para el usuario.
- Los OEM pueden asegurarse de que las apps esenciales permanezcan conectadas incluso sin una plan de datos pagado por el usuario. Por ejemplo, funciones críticas para la seguridad, como mapas, Asistente (conducción con manos libres) y las actualizaciones del sistema siguen funcionando cuando un usuario no tiene un plan de datos.
- PANS proporciona un nivel de detalle adicional de control específico para el tráfico de red. enrutamiento en Android. Por ejemplo, los OEM pueden definir de forma óptima una red lógica topología para el enrutamiento del tráfico a nivel de la app.
Figura 1. Marco de trabajo de PANS
Implementación de PANS
Para implementar PANS, una nueva API de ConnectivityManager
setOemNetworkPreference
.
Esta nueva API asigna apps a un OemNetworkPreference
.
Esta API solo está disponible para dispositivos de automóviles y está anotada como
@SystemApi
con un nuevo permiso signature
.
Figura 2: Implementación de PANS
Preferencias de red de OEM
OemNetworkPreference
es una abstracción sobre OEM_PAID
y
OEM_PRIVATE
NetworkCapabilities
apps de asignación por nombre de paquete
a una preferencia de red. Las preferencias de red permiten las jerarquías de red.
Por ejemplo, asigna una app a la preferencia OEM_NETWORK_PREFERENCE_OEM_PAID
que da como resultado la siguiente prioridad de las redes predeterminadas asignadas a una aplicación: usa un
UNMETERED
primero. Si UNMETERED
no está disponible, usa un
red OEM_PAID
. Si OEM_PAID
no está disponible, usa el sistema.
red predeterminada.
OEM_PAID
Se usa principalmente para apps que se pueden enrutar en en redes de OEM y no OEM.OEM_PRIVATE
Se usa principalmente para que las apps del OEM obtengan acceso a un red dedicada a ellos.
/** * 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;
Llama a las APIs de PANS
Para usar las APIs de PANS, haz lo siguiente:
- Usa
OemNetworkPreferences
para asignar una app a una preferencia de red. - Llama a
setOemNetworkPreference
conOemNetworkPreferences
. . - Usa 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
Cuando implementes PANS, ten en cuenta los siguientes puntos:
- Las preferencias de red no persisten en los inicios y se deben que se vuelven a aplicar en cada inicio.
- Para crear una preferencia para una app, no es necesario instalarla. Por lo tanto, la configuración las preferencias para las apps desinstaladas se pueden establecer de manera proactiva.
- En un momento determinado, una app solo se puede asignar a una preferencia de red única.
- Las preferencias de red se utilizan para establecer la red predeterminada de una app. Este es
la red que se usa cuando una app no especifica en qué redes desea usar
una de las APIs especializadas. Esto no solo cubre la gran mayoría de las necesidades de conectividad,
También permite el uso continuo de APIs especializadas, como la API de
NetworkRequest
. para no interrumpir los casos de uso de apps existentes. Por ejemplo, cuando una app solo quiere hacer una operación en una red no medida, la función PANS no la obligará a usar otra red.
Configura una red
Una red con OEM_PAID
o OEM_PRIVATE
deben estar disponibles cuando se use una preferencia de red correspondiente. En Android
proporciona asistencia para la configuración de capacidades de redes Ethernet y Wi-Fi. Para
Ethernet, puedes usar una superposición de recursos, config_ethernet_interfaces
.
Se configura en el tiempo de compilación.
Para Wi-Fi, la API de WifiNetworkSuggestion
se puede usar con el nuevo
APIs de Android 12, setOemPaid(Boolean)
y
setOemPrivate(Boolean)
Esto se puede cambiar en el tiempo de ejecución.
Considera los siguientes ejemplos:
- Una superposición de recursos llamada
config_ethernet_interfaces
especifica lo siguiente:- El nombre de la interfaz que se configurará.
- Los valores
NetworkCapabilities
deseados.<!-- 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>
- Este
WiFiNetworkSuggestion
se puede cambiar de forma dinámica:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Restringir el acceso a las redes PANS
Etiqueta una red con OEM_PAID
o OEM_PRIVATE
.
marcan esa red como una red restringida. Redes restringidas
solo pueden usarla las aplicaciones que tienen
El permiso CONNECTIVITY_USE_RESTRICTED_NETWORKS
, controlado por los OEM.
Las apps con este permiso pueden usar redes restringidas siempre que estas soliciten explícitamente con ellos. Sin embargo, estas apps no tendrán redes restringidas de forma predeterminada. Aplicaciones asignados a través de PANS pueden tener redes de OEM restringidas configuradas como predeterminadas, por lo que no será necesario el permiso de red restringido para usarlos. Cuando dicha aplicación tenga acceso restringido OEM asignada como red predeterminada por PANS, también tiene la capacidad solicitar de manera explícita esa red del OEM si la app así lo decide.
Revisa la app de referencia
Se proporciona una app de referencia (incluido el código) llamada NetworkPreferenceApp
.
en compilaciones de Automotive de depuración por parte del usuario y demuestra cómo hacer lo siguiente:
- Consumir métricas PANS.
- Establecer la política PANS
- Establece una política predeterminada para el dispositivo.
- Borra una política.
- Aplica una política al inicio.
- Cómo usar la API de Driver Distraction Consulta los Lineamientos sobre distracciones del conductor.
- Actualiza de forma dinámica la red Wi-Fi con
OEM_PAID
yOEM_PRIVATE
.
Figura 3: App de referencia
Métricas
Para facilitar la transparencia en torno al uso de datos, las métricas se recopilan y crean
disponibles con respecto a la cantidad de datos transmitidos
Asignaciones de red OEM_PAID
y OEM_PRIVATE
.
Solución de problemas
La mayoría de las condiciones de solución de problemas ocurren debido a que una app usa una red incorrecta. (sin conectividad de red) o excedentes de datos. Para habilitar resoluciones rápidas:
- La conectividad
dumpsys
incluye una lista de los recursos redes predeterminadas por app y sus apps asociadas (asignadas desde PANS). - La red
dumpsys
incluye la IP de UID y las reglas de firewall. - Las estadísticas de red
dumpsys
incluyen métricas de PANS por app. Por ejemplo, qué apps usaron qué red de OEM.
Todos los datos de dumpsys
están disponibles mediante la creación de un informe de errores de Android.