Fahrzeuge sind zunehmend auf Konnektivität angewiesen, um die wachsende Liste von Anwendungsfällen zu verwalten, die sowohl von OEMs als auch von Fahrzeughaltern angefordert werden. Dies führt zu einem erhöhten Datenvolumen und zugehörigen Kosten. Verwenden Sie die Funktion Netzwerkauswahl pro Anwendung (Per-Application Network Selection, PANS), um den Traffic bestimmter Apps über Netzwerke weiterzuleiten, die vom OEM bezahlt werden.
Mit PANS können Sie das Volumen und die Kosten der Datennutzung verwalten und gleichzeitig eine robuste, sichere und vernetzte Nutzung Ihres Autos ermöglichen. PANS:
- Besteht aus einer neuen API, die
ConnectivityManager
hinzugefügt wurde und nur für Geräte aus der Automobilbranche verfügbar ist. - Bietet eine aktualisierte WLAN-Vorschlags-API (siehe WLAN-Vorschlags-API für die Internetverbindung), die die Unterstützung für dynamisch wechselnde PANS-Netzwerkfunktionen umfasst.
- Es werden unterstützende Messwerte erfasst.
- Eine Referenz-App bereitstellen.
Warum PANS?
PANs können:
- App-zu-Netzwerk-Zuordnungen dynamisch aktualisieren
- Routing auf App-Ebene verwalten, 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.
- Nutzerorientierte Messwerte erfassen die Datennutzung zwischen App und Netzwerk für von OEMs 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 Nutzern mitgeteilt.
- Die gleiche Netzwerkkonfiguration wird auf alle Nutzer angewendet.
Hauptvorteile
PANS bietet OEMs folgende Hauptvorteile:
- OEMs können anstelle von Nutzern für Netzwerkverkehr bezahlen:
- Systemupdates können für den Nutzer kostenlos zur Verfügung gestellt werden.
- Die Netzwerknutzung bestimmter Apps kann für den Nutzer kostenlos sein.
- Telemetrie und andere Analysen können kostenlos verwaltet werden.
- OEMs können dafür sorgen, dass kritische Apps auch ohne vom Nutzer bezahltes Datenvolumen verbunden bleiben. So funktionieren beispielsweise sicherheitskritische Funktionen wie Karten, Assistant (Freisprechfunktion fürs Auto) und Systemupdates auch dann, wenn ein Nutzer kein Datentarif hat.
- PANS bietet eine detailliertere Steuerung speziell für das Routing von Netzwerkverkehr in Android. So können OEMs beispielsweise eine logische Netzwerktopologie für das Routing von Traffic auf App-Ebene optimal definieren.
Abbildung 1 PANS-Framework
PANS implementieren
Zur Implementierung von PANS wird eine neue ConnectivityManager
API, setOemNetworkPreference
, bereitgestellt.
Mit dieser neuen API werden Apps einem OemNetworkPreference
zugeordnet.
Diese API ist nur für Geräte aus der Automobilbranche verfügbar und wird als @SystemApi
mit einer neuen signature
-Berechtigung gekennzeichnet.
Abbildung 2: PANS implementieren
OemNetworkPreference
OemNetworkPreference
ist eine Abstraktion von OEM_PAID
und OEM_PRIVATE
. NetworkCapabilities
ordnet Apps anhand des Paketnamens einer Netzwerkeinstellung zu. Netzwerkeinstellungen ermöglichen Netzwerkhierarchien.
Wenn Sie beispielsweise eine App der Einstellung OEM_NETWORK_PREFERENCE_OEM_PAID
zuordnen, wird der App die folgende Priorität der Standardnetzwerke zugewiesen: zuerst ein UNMETERED
-Netzwerk, falls UNMETERED
nicht verfügbar ist, ein OEM_PAID
-Netzwerk und falls OEM_PAID
nicht verfügbar ist, das Standardnetzwerk des Systems.
OEM_PAID
Wird hauptsächlich für Apps verwendet, die sowohl über OEM- als auch über Nicht-OEM-Netzwerke weitergeleitet werden können.OEM_PRIVATE
Wird hauptsächlich für OEM-Apps verwendet, um auf ein speziell für sie vorgesehenes Netzwerk zuzugreifen.
/** * 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;
PANS APIs aufrufen
So verwenden Sie PANS-APIs:
- Verwenden Sie
OemNetworkPreferences
, um einer App eine Netzwerkeinstellung zuzuordnen. - Rufen Sie
setOemNetworkPreference
mit demOemNetworkPreferences
-Objekt auf. - Verwende die
Runnable
-Schnittstelle, um auf den API-Abschluss zu warten.
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);
Wissenswertes
Beachten Sie bei der Implementierung von PANS Folgendes:
- Netzwerkeinstellungen werden nicht bei jedem Start beibehalten und müssen bei jedem Start neu angewendet werden.
- Sie müssen die App nicht installiert haben, um eine Einstellung dafür zu erstellen. Daher können Netzwerkeinstellungen für deinstallierte Apps proaktiv festgelegt werden.
- Eine App kann jeweils nur einer Netzwerkeinstellung zugeordnet werden.
- Mit den Netzwerkeinstellungen wird das Standardnetzwerk einer App festgelegt. Dieses Netzwerk wird verwendet, wenn eine App nicht über eine der speziellen APIs angegeben hat, welche Netzwerke verwendet werden sollen. Damit werden nicht nur die meisten Verbindungsanforderungen abgedeckt, sondern auch die weitere Nutzung spezieller APIs wie der
NetworkRequest
API ermöglicht, damit bestehende App-Anwendungsfälle nicht beeinträchtigt werden. Wenn eine App beispielsweise nur einen Vorgang über ein unbegrenztes Netzwerk ausführen möchte, zwingt PANS sie nicht, ein anderes Netzwerk zu verwenden.
Netzwerk konfigurieren
Wenn eine entsprechende Netzwerkeinstellung verwendet wird, muss ein Netzwerk mit den Funktionen OEM_PAID
oder OEM_PRIVATE
verfügbar sein. Android unterstützt die Konfiguration von Funktionen für Ethernet- und WLANs. Für Ethernet-Netzwerke können Sie ein Ressourcen-Overlay, config_ethernet_interfaces
, verwenden.
Dieser Wert wird zur Kompilierungszeit festgelegt.
Für WLAN kann die WifiNetworkSuggestion
API mit den neuen Android 12 APIs setOemPaid(Boolean)
und setOemPrivate(Boolean)
verwendet werden. Dieser Wert 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>
- Diese
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);
Zugriff auf PANS-Netzwerke einschränken
Wenn Sie ein Netzwerk mit der OEM_PAID
- oder OEM_PRIVATE
-Funktion taggen, wird es als eingeschränktes Netzwerk gekennzeichnet. Eingeschränkt nutzbare Netzwerke können nur von Apps verwendet werden, die die Berechtigung CONNECTIVITY_USE_RESTRICTED_NETWORKS
haben. Diese wird von OEMs verwaltet.
Apps mit dieser Berechtigung können eingeschränkte Netzwerke verwenden, sofern die Apps sie ausdrücklich anfordern. Für diese Apps werden jedoch keine eingeschränkten Netzwerke als Standard festgelegt. Für über PANS zugeordnete Apps können eingeschränkte OEM-Netzwerke als Standard festgelegt werden. Für die Nutzung dieser Apps ist dann keine Berechtigung für eingeschränkte Netzwerke erforderlich. Wenn einer solchen App ein eingeschränktes OEM-Netzwerk als Standardnetzwerk von PANS zugewiesen ist, kann sie dieses OEM-Netzwerk auch explizit anfordern, wenn sie dies wünscht.
Referenz-App prüfen
In Builds für die Nutzerbehebung von Problemen in der Automobilbranche wird eine Referenz-App (einschließlich Code) mit dem Namen NetworkPreferenceApp
bereitgestellt. Dort wird gezeigt, wie Sie Folgendes tun:
- PANS-Messwerte verwenden
- PANS-Richtlinie festlegen
- Legen Sie eine Standardrichtlinie für das Gerät fest.
- Richtlinie löschen.
- Richtlinie beim Starten anwenden
- Verwenden Sie die API für Ablenkungen am Steuer (siehe Richtlinien zu Ablenkungen am Steuer).
- WLAN mit
OEM_PAID
undOEM_PRIVATE
dynamisch aktualisieren
Abbildung 3: Referenz-App
Messwerte
Um für Transparenz bei der Datennutzung zu sorgen, werden Messwerte zur Menge der über die OEM_PAID
- und OEM_PRIVATE
-Netzwerkzuordnungen übertragenen Daten erfasst und zur Verfügung gestellt.
Fehlerbehebung
Die meisten Probleme bei der Fehlerbehebung entstehen entweder durch die Verwendung des falschen Netzwerks durch eine App (keine Netzwerkverbindung) oder durch Datenüberschreitungen. So aktivieren Sie die Funktion für schnelle Lösungen:
- „Connectivity“
dumpsys
enthält eine Liste der aktiven appspezifischen Standardnetzwerke und der zugehörigen Apps (aus PANS zugeordnet). - Netd
dumpsys
enthält UID-IP- und Firewallregeln. - Netstats
dumpsys
enthält PANS-Messwerte pro App. Beispielsweise, welche Apps welches OEM-Netzwerk verwendet haben.
Alle dumpsys
-Daten sind verfügbar, wenn Sie einen Android-Fehlerbericht erstellen.