Les véhicules reposent de plus en plus sur la connectivité pour gérer la liste croissante de cas d'utilisation demandés par les OEM et les propriétaires de véhicules, ce qui entraîne une augmentation de l'empreinte de données et des coûts associés. Utilisez la fonctionnalité Sélection de réseau par application (PANS) pour acheminer le trafic des applications spécifiées sur les réseaux payés par l'OEM.
Avec PANS, vous pouvez gérer le volume et le coût de l'utilisation des données tout en offrant une expérience automobile robuste, sécurisée et connectée. PANS:
- Il s'agit d'une nouvelle API ajoutée à
ConnectivityManager
, disponible uniquement pour les appareils automobiles. - Fournit une API Wi-Fi Suggestion mise à jour (voir la section API Wi-Fi Suggestion pour la connectivité Internet) pour prendre en charge les fonctionnalités réseau PANS qui changent de manière dynamique.
- Collecte des métriques associées.
- Fournit une application de référence.
Pourquoi utiliser PANS ?
Les PANS peuvent:
- Mettez à jour dynamiquement les mises en correspondance d'applications et de réseaux.
- Gérez le routage au niveau de l'application sans modifier les applications.
- Seules les applications autorisées par l'OEM peuvent accéder aux réseaux OEM mappés.
- Les développeurs d'applications n'ont pas besoin d'apporter de modifications pour implémenter cette fonctionnalité.
- Les métriques destinées aux utilisateurs suivent l'utilisation des données entre l'application et le réseau pour les réseaux gérés par l'OEM.
- L'accès au réseau est sécurisé et ne peut pas être abusé par des cas d'utilisation involontaires ou des applications non autorisées.
- Les modifications apportées aux mappages d'application à réseau PANS sont communiquées aux utilisateurs.
- La même configuration réseau est appliquée à tous les utilisateurs.
Principaux avantages
Les OEMS bénéficient des principaux avantages suivants:
- Les OEM peuvent payer le trafic réseau à la place des utilisateurs :
- Les mises à jour du système peuvent être fournies sans frais pour l'utilisateur.
- L'utilisation du réseau des applications spécifiées peut être fournie sans frais pour l'utilisateur.
- La télémétrie et d'autres analyses peuvent être gérées sans frais pour l'utilisateur.
- Les OEM peuvent s'assurer que les applications critiques restent connectées, même sans forfait de données payé par l'utilisateur. Par exemple, les fonctionnalités essentielles à la sécurité telles que Maps, l'Assistant (conduite mains libres) et les mises à jour du système continuent de fonctionner même si l'utilisateur ne dispose pas d'un forfait de données.
- PANS offre un contrôle plus précis spécifique au routage du trafic réseau dans Android. Par exemple, les OEM peuvent définir de manière optimale une topologie réseau logique pour le routage du trafic au niveau de l'application.
Figure 1 : Framework PANS
Implémenter PANS
Pour implémenter PANS, une nouvelle API ConnectivityManager
, setOemNetworkPreference
, est fournie.
Cette nouvelle API met en correspondance des applications avec un OemNetworkPreference
.
Cette API n'est disponible que pour les appareils automobiles et est annotée comme @SystemApi
avec une nouvelle autorisation signature
.
Figure 2. Implémenter PANS
OemNetworkPreference
OemNetworkPreference
est une abstraction de OEM_PAID
et OEM_PRIVATE
NetworkCapabilities
qui mappe les applications par nom de package à une préférence réseau. Les préférences réseau permettent de créer des hiérarchies réseau.
Par exemple, si vous associez une application à la préférence OEM_NETWORK_PREFERENCE_OEM_PAID
, la priorité des réseaux par défaut attribués à une application est la suivante: utilisez d'abord un réseau UNMETERED
, si UNMETERED
n'est pas disponible, utilisez un réseau OEM_PAID
, et si OEM_PAID
n'est pas disponible, utilisez le réseau par défaut du système.
OEM_PAID
Utilisé principalement pour les applications pouvant être routées à la fois sur des réseaux OEM et non OEM.OEM_PRIVATE
Principalement utilisé pour les applications OEM afin d'accéder à un réseau qui leur est dédié.
/** * 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;
Appeler les API PANS
Pour utiliser les API PANS:
- Utilisez
OemNetworkPreferences
pour mapper une application à une préférence réseau. - Appelez
setOemNetworkPreference
avec l'objetOemNetworkPreferences
. - Utilisez l'interface
Runnable
pour écouter la fin de l'API.
Exemple :
// 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);
Points à prendre en compte
Lorsque vous implémentez des PANS, tenez compte des points suivants:
- Les préférences réseau ne sont pas conservées entre les démarrages et doivent être réappliquées à chaque démarrage.
- Pour créer une préférence pour une application, il n'est pas nécessaire qu'elle soit installée. Par conséquent, les préférences réseau des applications désinstallées peuvent être définies de manière proactive.
- À tout moment, une application ne peut être mappée qu'à une seule préférence de réseau.
- Les préférences réseau permettent de définir le réseau par défaut d'une application. Il s'agit du réseau utilisé lorsqu'une application n'a pas spécifié le ou les réseaux qu'elle souhaite utiliser via l'une des API spécialisées. Cela couvre non seulement la grande majorité des besoins de connectivité, mais permet également de continuer à utiliser des API spécialisées telles que l'API
NetworkRequest
afin de ne pas interrompre les cas d'utilisation des applications existants. Par exemple, lorsqu'une application ne souhaite effectuer qu'une seule opération sur un réseau illimité, PANS ne l'oblige pas à utiliser un autre réseau.
Configurer un réseau
Un réseau avec les fonctionnalités OEM_PAID
ou OEM_PRIVATE
doit être disponible lorsque vous utilisez une préférence de réseau correspondante. Android prend en charge la configuration des fonctionnalités pour les réseaux Ethernet et Wi-Fi. Pour les réseaux Ethernet, vous pouvez utiliser une superposition de ressources, config_ethernet_interfaces
.
Cette valeur est définie au moment de la compilation.
Pour le Wi-Fi, l'API WifiNetworkSuggestion
peut être utilisée avec les nouvelles API Android 12, setOemPaid(Boolean)
et setOemPrivate(Boolean)
. Ce paramètre peut être modifié au moment de l'exécution.
Prenons ces exemples:
- Une superposition de ressources nommée
config_ethernet_interfaces
spécifie les éléments suivants :- Nom de l'interface à configurer.
- Valeurs
NetworkCapabilities
souhaitées.<!-- 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>
- Cette
WiFiNetworkSuggestion
peut être modifiée de manière dynamique:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Limiter l'accès aux réseaux PANS
Taguer un réseau avec les fonctionnalités OEM_PAID
ou OEM_PRIVATE
le marque comme réseau limité. Les réseaux restreints ne peuvent être utilisés que par les applications disposant de l'autorisation CONNECTIVITY_USE_RESTRICTED_NETWORKS
, qui est contrôlée par les OEM.
Les applications disposant de cette autorisation peuvent utiliser des réseaux limités à condition de les demander explicitement. Toutefois, ces applications n'auront pas de réseaux limités par défaut. Les réseaux OEM limités peuvent être définis par défaut pour les applications mappées via PANS. Elles n'auront donc pas besoin de l'autorisation de réseau limité pour les utiliser. Lorsqu'une telle application se voit attribuer un réseau OEM limité comme réseau par défaut par PANS, elle peut également demander explicitement ce réseau OEM si elle le souhaite.
Examiner l'application de référence
Une application de référence (y compris le code) nommée NetworkPreferenceApp
est fournie dans les builds automobiles de débogage utilisateur et montre comment:
- Utilisez les métriques PANS.
- Définissez la stratégie PANS.
- Définissez une règle par défaut pour l'appareil.
- Supprimez une stratégie.
- Appliquez une règle au démarrage.
- Utilisez l'API Driver Distraction (voir les Consignes concernant les distractions du conducteur).
- Mettez à jour le Wi-Fi de manière dynamique avec
OEM_PAID
etOEM_PRIVATE
.
Figure 3. Application de référence
Métriques
Pour faciliter la transparence concernant l'utilisation des données, des métriques sont collectées et mises à disposition concernant la quantité de données transmises via les mappages réseau OEM_PAID
et OEM_PRIVATE
.
Dépannage
La plupart des conditions de dépannage proviennent d'une application qui utilise le mauvais réseau (pas de connectivité réseau) ou d'un dépassement de données. Pour activer les résolutions rapides:
dumpsys
de connectivité inclut une liste des réseaux par défaut actifs par application et des applications associées (mappées à partir de PANS).- Netd
dumpsys
inclut l'adresse IP UID et les règles de pare-feu. - Netstats
dumpsys
inclut des métriques PANS par application. Par exemple, quelles applications ont utilisé quel réseau OEM.
Toutes les données dumpsys
sont disponibles en créant un rapport de bug Android.