Fahrzeuge verlassen sich zunehmend auf Konnektivität, um die wachsende Liste von Anwendungsfällen zu verwalten, die sowohl von OEMs als auch von Fahrzeugbesitzern gefordert werden, was zu einem größeren Datenfußabdruck und den damit verbundenen Kosten führt. Verwenden Sie die PANS-Funktion (Per-Application Network Selection) , um den Datenverkehr bestimmter Apps in vom OEM bezahlten Netzwerken weiterzuleiten.
Mit PANS können Sie das Volumen und die Kosten der Datennutzung verwalten und gleichzeitig ein robustes, sicheres und vernetztes Fahrzeugerlebnis bieten. PFANNEN:
- Besteht aus einer neuen API, die
ConnectivityManager
hinzugefügt wurde und nur für Automobilgeräte verfügbar ist. - Bietet eine aktualisierte Wi-Fi-Vorschlags-API (siehe Wi-Fi-Vorschlags-API für Internetkonnektivität ), um Unterstützung für sich dynamisch ändernde PANS-Netzwerkfunktionen zu bieten.
- Sammelt unterstützende Kennzahlen.
- Bietet eine Referenz-App.
Warum PANS?
PANS kann:
- Aktualisieren Sie App-zu-Netzwerk-Zuordnungen dynamisch.
- Verwalten Sie das Routing auf App-Ebene, ohne Änderungen an Apps vorzunehmen.
- Nur vom OEM zugelassene Apps können auf die zugeordneten OEM-Netzwerke zugreifen.
- App-Entwickler müssen keine Änderungen vornehmen, um diese Funktion zu implementieren.
- Benutzerbezogene Metriken verfolgen die App-zu-Netzwerk-Datennutzung für OEM-verwaltete Netzwerke.
- Der Netzwerkzugriff ist sicher und kann nicht durch unbeabsichtigte Anwendungsfälle oder nicht autorisierte Apps missbraucht werden.
- Änderungen an PANS-App-zu-Netzwerk-Zuordnungen werden den Benutzern mitgeteilt.
- Für alle Benutzer gilt die gleiche Netzwerkkonfiguration.
Kernvorteile
PANS bietet OEMS die folgenden Kernvorteile:
- OEMs können für den Netzwerkverkehr statt für Benutzer bezahlen:
- Systemaktualisierungen können dem Benutzer kostenlos zur Verfügung gestellt werden.
- Die Netzwerknutzung bestimmter Apps kann dem Benutzer kostenlos zur Verfügung gestellt werden.
- Telemetrie und andere Analysen können für den Benutzer kostenlos verwaltet werden.
- OEMs können sicherstellen, dass wichtige Apps auch ohne einen vom Benutzer bezahlten Datentarif verbunden bleiben. Beispielsweise funktionieren sicherheitskritische Funktionen wie Karten, Assistent (freihändiges Fahren) und Systemaktualisierungen auch dann weiterhin, wenn ein Benutzer keinen Datentarif hat.
- PANS bietet eine zusätzliche Granularität der Steuerung speziell für das Routing des Netzwerkverkehrs in Android. Beispielsweise können OEMs eine logische Netzwerktopologie für die Weiterleitung des Datenverkehrs auf App-Ebene optimal definieren.
Abbildung 1 . PANS-Framework
Implementieren Sie PANS
Zur Implementierung von PANS wird eine neue ConnectivityManager
API, setOemNetworkPreference
, bereitgestellt. Diese neue API ordnet Apps einer OemNetworkPreference
zu. Diese API ist nur für Automobilgeräte verfügbar und ist als @SystemApi
mit einer neuen signature
versehen.
Abbildung 2. PANS implementieren
OemNetworkPreference
OemNetworkPreference
ist eine Abstraktion über OEM_PAID
und OEM_PRIVATE
NetworkCapabilities
, die Apps nach Paketnamen einer Netzwerkpräferenz zuordnet. Netzwerkeinstellungen ermöglichen Netzwerkhierarchien. Wenn Sie beispielsweise eine App der Einstellung OEM_NETWORK_PREFERENCE_OEM_PAID
zuordnen, ergibt sich die folgende Priorität der einer App zugewiesenen Standardnetzwerke: Verwenden Sie zuerst ein UNMETERED
Netzwerk. Wenn UNMETERED
nicht verfügbar ist, verwenden Sie ein OEM_PAID
Netzwerk. Wenn OEM_PAID
nicht verfügbar ist, verwenden Sie den Systemstandard Netzwerk.
-
OEM_PAID
Wird hauptsächlich für Apps verwendet, die sowohl in OEM- als auch in Nicht-OEM-Netzwerken weitergeleitet werden können. -
OEM_PRIVATE
Wird hauptsächlich für OEM-Apps verwendet, um Zugriff auf ein ihnen gewidmetes Netzwerk zu erhalten.
/** * 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;
Rufen Sie PANS-APIs auf
So verwenden Sie PANS-APIs:
- Verwenden Sie
OemNetworkPreferences
, um eine App einer Netzwerkeinstellung zuzuordnen. - Rufen Sie
setOemNetworkPreference
mit demOemNetworkPreferences
Objekt auf. - Verwenden Sie die
Runnable
Schnittstelle, um auf die API-Vervollständigung zu warten.
Zum Beispiel:
// 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);
Überlegungen
Beachten Sie bei der Implementierung von PANS die folgenden Punkte:
- Netzwerkeinstellungen bleiben nicht bei jedem Start erhalten und müssen bei jedem Start erneut angewendet werden.
- Um eine Voreinstellung für eine App zu erstellen, muss diese nicht installiert sein. Daher können Netzwerkeinstellungen für deinstallierte Apps proaktiv festgelegt werden.
- Zu jedem Zeitpunkt kann eine App nur einer einzigen Netzwerkpräferenz zugeordnet werden.
- Netzwerkeinstellungen werden verwendet, um das Standardnetzwerk einer App festzulegen. Dies ist das Netzwerk, das verwendet wird, wenn eine App nicht über eine der speziellen APIs angegeben hat, welche Netzwerke sie verwenden möchte. Dies deckt nicht nur den Großteil der Konnektivitätsanforderungen ab, sondern ermöglicht auch die fortgesetzte Nutzung spezialisierter APIs wie der
NetworkRequest
API, um bestehende App-Anwendungsfälle nicht zu beeinträchtigen. Wenn eine App beispielsweise einen Vorgang nur über ein nicht gemessenes Netzwerk ausführen möchte, wird sie von PANS nicht gezwungen, ein anderes Netzwerk zu verwenden.
Konfigurieren Sie ein Netzwerk
Bei Verwendung einer entsprechenden Netzwerkeinstellung muss ein Netzwerk mit den Funktionen OEM_PAID
oder OEM_PRIVATE
verfügbar sein. Android bietet Unterstützung für die Konfiguration von Funktionen für Ethernet- und Wi-Fi-Netzwerke. Für Ethernet-Netzwerke können Sie ein Ressourcen-Overlay verwenden, config_ethernet_interfaces
. Dies wird zur Kompilierungszeit festgelegt.
Für WLAN kann die WifiNetworkSuggestion
-API mit den neuen Android 12-APIs setOemPaid(Boolean)
und setOemPrivate(Boolean)
verwendet werden. Dies kann zur Laufzeit geändert werden.
Betrachten Sie diese Beispiele:
- Ein Ressourcen-Overlay mit dem Namen
config_ethernet_interfaces
gibt Folgendes an:- Der Name der zu konfigurierenden Schnittstelle.
- Die gewünschten
NetworkCapabilities
Werte.<!-- 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>
- Dieser
WiFiNetworkSuggestion
kann dynamisch geändert werden:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Beschränken Sie den Zugriff auf PANS-Netzwerke
Wenn Sie ein Netzwerk entweder mit den Funktionen OEM_PAID
oder OEM_PRIVATE
kennzeichnen, wird dieses Netzwerk als eingeschränktes Netzwerk markiert. Eingeschränkte Netzwerke können nur von Apps verwendet werden, die über die Berechtigung CONNECTIVITY_USE_RESTRICTED_NETWORKS
verfügen, die von OEMs gesteuert wird.
Apps mit dieser Berechtigung können eingeschränkte Netzwerke nutzen , sofern die Apps dies ausdrücklich anfordern . Diese Apps erhalten jedoch standardmäßig keine eingeschränkten Netzwerke. Für Apps, die über PANS zugeordnet werden, können eingeschränkte OEM-Netzwerke als Standard festgelegt sein und sie benötigen keine eingeschränkte Netzwerkberechtigung, um sie zu verwenden. Wenn einer solchen App ein eingeschränktes OEM-Netzwerk von PANS als Standardnetzwerk zugewiesen wurde, hat sie auch die Möglichkeit, dieses OEM-Netzwerk explizit anzufordern, wenn die App dies wünscht.
Sehen Sie sich die Referenz-App an
Eine Referenz-App (einschließlich Code) mit dem Namen NetworkPreferenceApp
wird in Automotive-Builds für Benutzerdebuggen bereitgestellt und demonstriert, wie man:
- PANS-Metriken nutzen.
- Legen Sie die PANS-Richtlinie fest.
- Legen Sie eine Standardrichtlinie für das Gerät fest.
- Löschen Sie eine Richtlinie.
- Wenden Sie beim Booten eine Richtlinie an.
- Verwenden Sie die Fahrerablenkungs-API (siehe Richtlinien zur Fahrerablenkung ).
- Aktualisieren Sie WLAN dynamisch mit
OEM_PAID
undOEM_PRIVATE
.
Abbildung 3. Referenz-App
Metriken
Um die Transparenz der Datennutzung zu erleichtern, werden Metriken zur Menge der über die Netzwerkzuordnungen OEM_PAID
und OEM_PRIVATE
übertragenen Daten gesammelt und verfügbar gemacht.
Fehlerbehebung
Die meisten Probleme bei der Fehlerbehebung sind darauf zurückzuführen, dass eine App das falsche Netzwerk verwendet (keine Netzwerkverbindung) oder dass es zu Datenüberschreitungen kommt. So aktivieren Sie schnelle Lösungen:
- Connectivity
dumpsys
enthält eine Liste der aktiven Standardnetzwerke pro App und der zugehörigen Apps (zugeordnet von PANS). - Netd
dumpsys
enthält UID-IP- und Firewall-Regeln. - Netstats
dumpsys
enthält PANS-Metriken pro App. Zum Beispiel, welche Apps welches OEM-Netzwerk verwendet haben.
Alle dumpsys
Daten sind durch die Erstellung eines Android-Fehlerberichts verfügbar.