Les véhicules dépendent de plus en plus de la connectivité pour gérer la liste croissante demandés par les OEM et les propriétaires de véhicules, ce qui a entraîné une augmentation de l'empreinte des données et des coûts associés. Utilisez la sélection de réseau par application (PANS) pour acheminer le trafic de certaines applications sur des réseaux payants par l'OEM.
Avec les PAN, vous pouvez gérer le volume et le coût de l'utilisation des données tout en offrant une expérience robuste, sécurisée et connectée de la voiture. PAN:
- Comprend une nouvelle API ajoutée à
ConnectivityManager
disponible uniquement aux appareils automobiles. - Fournit une API de suggestion Wi-Fi mise à jour (voir API Wi-Fi Suggestion pour la connectivité Internet) pour inclure la prise en charge du changement dynamique des capacités du réseau PANS.
- Collecte les métriques pertinentes.
- Fournit une application de référence.
Pourquoi les PAN ?
Les PAN peuvent:
- Mettez à jour de manière dynamique les mappages application/réseau.
- Gérez le routage au niveau de l'application sans modifier les applications.
- Seules les applications autorisées par les 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 utilisateur suivent la consommation des données d'application à réseau pour les données gérées par l'OEM. réseaux sociaux.
- L'accès au réseau est sécurisé et ne peut pas être utilisé de manière abusive par des cas d'utilisation involontaires applications non autorisées.
- Les utilisateurs sont informés des modifications apportées aux mappages application/réseau des PANS.
- La même configuration réseau est appliquée à tous les utilisateurs.
Principaux avantages
PANS offre aux OEM les principaux avantages suivants:
- Les OEM peuvent payer pour le trafic réseau à la place des utilisateurs:
<ph type="x-smartling-placeholder">
- </ph>
- Les mises à jour du système peuvent être fournies à l'utilisateur sans frais.
- L'utilisation du réseau pour les applications spécifiées peut être fournie à l'utilisateur sans frais.
- 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 leurs applications critiques restent connectées même sans forfait de données payé par l'utilisateur. Par exemple, des fonctionnalités essentielles pour la sécurité telles que Maps, l'Assistant (conduite mains libres) et les mises à jour du système continuent de fonctionner Lorsqu'un utilisateur n'a pas de forfait Internet.
- PANS offre une précision supplémentaire du contrôle spécifique au trafic réseau le routage dans Android. Par exemple, les OEM peuvent définir de façon optimale un réseau logique pour le routage du trafic au niveau de l'application.
Figure 1 : Framework PANS
Implémenter les PAN
Pour implémenter les PAN, une nouvelle API ConnectivityManager
,
setOemNetworkPreference
est fourni.
Cette nouvelle API mappe les applications avec un OemNetworkPreference
.
Cette API n'est disponible que pour les appareils automobiles et est annotée en tant que
@SystemApi
avec une nouvelle autorisation signature
.
Figure 2. Implémenter les PAN
OemNetworkPreference
OemNetworkPreference
est une abstraction sur OEM_PAID
.
OEM_PRIVATE
NetworkCapabilities
applications de mappage par nom de package
à une préférence réseau. Les préférences réseau permettent d'avoir des hiérarchies de réseau.
Par exemple, mapper une application sur la préférence OEM_NETWORK_PREFERENCE_OEM_PAID
entraîne la priorité suivante pour les réseaux par défaut attribués à une application: utilisez un
Réseau UNMETERED
en premier. Si UNMETERED
n'est pas disponible, utilisez un
OEM_PAID
, et si OEM_PAID
n'est pas disponible, utiliser le système
réseau par défaut.
OEM_PAID
Utilisé principalement pour les applications pouvant être acheminées à la fois Réseaux OEM et non OEM.OEM_PRIVATE
: permet principalement aux applications OEM d'accéder à un 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. - Appeler
setOemNetworkPreference
avec leOemNetworkPreferences
. - Utilisez l'interface
Runnable
pour écouter l'achèvement 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 les PAN, gardez à l'esprit les points suivants:
- Les préférences réseau ne sont pas persistées entre les bottes et doivent être réappliquée à chaque démarrage.
- Pour créer une préférence pour une application, il n'est pas nécessaire de l'installer. Par conséquent, le réseau les préférences pour les applications désinstallées peuvent être définies de manière proactive.
- Une application ne peut être associée qu'à une seule préférence réseau.
- Les préférences réseau permettent de définir le réseau par défaut d'une application. C'est
le 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. Non seulement cela couvre la grande majorité
des besoins de connectivité,
il permet également de continuer à utiliser des API spécialisées telles que l'API
NetworkRequest
. afin de ne pas affecter les cas d'utilisation existants de l'application. Par exemple, lorsqu'une application ne veut effectuer un fonctionnement sur un réseau illimité, les PAN ne le forceront pas à utiliser un autre réseau.
Configurer un réseau
Un réseau avec le OEM_PAID
ou le OEM_PRIVATE
doivent être disponibles lors de l'utilisation d'une préférence réseau correspondante. Android
permet de configurer des fonctionnalités pour les réseaux Ethernet et Wi-Fi. Pour
Sur 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, vous pouvez utiliser l'API WifiNetworkSuggestion
avec le nouveau
API Android 12, setOemPaid(Boolean)
et
setOemPrivate(Boolean)
Ce paramètre peut être modifié au moment de l'exécution.
Voici quelques exemples:
- Une superposition de ressources nommée
config_ethernet_interfaces
spécifie: <ph type="x-smartling-placeholder">- </ph>
- Nom de l'interface à configurer.
- Les 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>
- Ce
WiFiNetworkSuggestion
peut être modifié 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
Ajouter des tags à un réseau avec OEM_PAID
ou OEM_PRIVATE
marque ce réseau comme réseau restreint. Réseaux restreints
ne peuvent être utilisées que par les applications
Autorisation CONNECTIVITY_USE_RESTRICTED_NETWORKS
, contrôlée par les OEM.
Les applications disposant de cette autorisation peuvent utiliser des réseaux restreints à condition que les applications en fassent explicitement la demande les utiliser. Toutefois, ces applications ne seront pas associées à des réseaux restreints par défaut. Applications cartographiés via des PANS peuvent avoir des réseaux OEM restreints définis par défaut et n'auront pas besoin l'autorisation réseau limitée pour les utiliser. Lorsqu'une telle application dispose d'un accès réseau OEM désigné comme réseau par défaut par les PANS, il a également la capacité de explicitement demandé ledit réseau OEM si l'application choisit de le faire.
Consulter l'application de référence
Une application de référence (y compris du code) nommée NetworkPreferenceApp
est fournie
dans les builds automobile de débogage utilisateur et montre comment:
- Utiliser les métriques PANS
- Définissez la règle PANS.
- Définissez une règle par défaut pour l'appareil.
- Supprimez une règle.
- Appliquez une règle au démarrage.
- Utiliser l'API Driver Distraction (consultez les consignes concernant la distraction du conducteur).
- Mise à jour dynamique du Wi-Fi avec
OEM_PAID
etOEM_PRIVATE
.
Figure 3. Application de référence
Métriques
Pour plus de transparence concernant l'utilisation des données, des métriques sont collectées
concernant la quantité de données transmises
Mappages réseau OEM_PAID
et OEM_PRIVATE
.
Dépannage
La plupart des problèmes de dépannage découlent d'une application utilisant le mauvais réseau (aucune connectivité réseau) ni de données excessives. Pour activer les résolutions rapides:
- La connectivité
dumpsys
inclut une liste des réseaux par défaut par application et leurs applications associées (mappés à partir des PANS). - Le
dumpsys
de Netd inclut l'adresse IP d'UID et les règles de pare-feu. - Le
dumpsys
Netstats inclut les 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.