Immer mehr Fahrzeuge sind auf Konnektivität angewiesen, um die wachsende Anzahl von Fahrzeugen Anwendungsfälle, die sowohl von OEMs als auch von Fahrzeugbesitzern angefragt wurden, Daten-Fußabdruck und die damit verbundenen Kosten. Auswahl des Netzwerks pro Anwendung verwenden (PANS) zur Weiterleitung des Traffics bestimmter Apps in Netzwerken, für die kostenpflichtige durch den OEM.
Mit PANS können Sie das Volumen und die Kosten der Datennutzung verwalten und gleichzeitig für ein robustes, sicheres und vernetztes Auto. PANS:
- Besteht aus einer neuen API, die zu „
ConnectivityManager
“ hinzugefügt wurde für Geräte in der Automobilbranche. - Stellt eine aktualisierte Wi-Fi Suggest API bereit (siehe Wi-Fi Suggest API für die Internetverbindung) um die Unterstützung für sich dynamisch ändernde PANS-Netzwerkfunktionen hinzuzufügen.
- Erfasst unterstützende Metriken.
- Stellt eine Referenzanwendung bereit.
Warum PANS?
PANS können:
- Aktualisieren Sie die App-zu-Netzwerk-Zuordnungen dynamisch.
- Sie können die Weiterleitung auf App-Ebene verwalten, ohne Änderungen an den Apps vorzunehmen.
- Nur Apps, die vom OEM zugelassen wurden, können auf die zugeordneten OEM-Netzwerke zugreifen.
- App-Entwickler müssen keine Änderungen vornehmen, um diese Funktion zu implementieren.
- Nutzerseitige Messwerte erfassen die Datennutzung zwischen Apps und dem OEM Netzwerken.
- Der Netzwerkzugriff ist sicher und darf nicht für unbeabsichtigte Anwendungsfälle oder für nicht autorisierte Apps.
- Änderungen an PANS-Zuordnungen zwischen Apps und Netzwerken werden den Nutzern mitgeteilt.
- Dieselbe Netzwerkkonfiguration wird auf alle Nutzer angewendet.
Hauptvorteile
PANS bieten OEMs folgende wesentliche Vorteile:
- OEMs zahlen für Netzwerkverkehr statt für Nutzer:
<ph type="x-smartling-placeholder">
- </ph>
- Systemupdates können für Nutzer kostenlos bereitgestellt werden.
- Die Netzwerknutzung bestimmter Apps kann für den Nutzer kostenlos sein.
- Telemetrie und andere Analysen können kostenlos für den Nutzer verwaltet werden.
- OEMs können dafür sorgen, dass wichtige Apps auch ohne eine nutzerbezahlten Datentarif. z. B. sicherheitsrelevante Funktionen wie Maps, Assistant (Freisprecheinrichtung) und Systemupdates funktionieren auch weiterhin, Ein Nutzer hat keinen Datentarif.
- PANS bieten einen zusätzlichen Detaillierungsgrad speziell für den Netzwerkverkehr Routenplanung in Android. Beispielsweise können OEMs optimal ein logisches Netzwerk definieren Topologie für das Routing von Traffic auf Anwendungsebene.
Abbildung 1: PANS-Framework
PANS implementieren
Zum Implementieren von PANS, einer neuen ConnectivityManager
API,
setOemNetworkPreference
ist angegeben.
Diese neue API ordnet Apps einem OemNetworkPreference
zu.
Diese API ist nur für Automobilgeräte verfügbar und wird als
@SystemApi
mit einer neuen signature
-Berechtigung.
Abbildung 2: PANS implementieren
Netzwerkpräferenz
OemNetworkPreference
ist eine Abstraktion über OEM_PAID
und
OEM_PRIVATE
NetworkCapabilities
, der Apps nach Paketnamen zuordnet
eine Netzwerkeinstellung festzulegen. In den Netzwerkeinstellungen sind Netzwerkhierarchien möglich.
Beispiel: Die Zuordnung einer App zur OEM_NETWORK_PREFERENCE_OEM_PAID
-Einstellung
hat folgende Priorität für Standardnetzwerke, die einer App zugewiesen sind: use an
UNMETERED
-Netzwerk zuerst. Wenn UNMETERED
nicht verfügbar ist, verwenden Sie ein
OEM_PAID
-Netzwerk. Wenn OEM_PAID
nicht verfügbar ist, verwende das System
Standardnetzwerk.
OEM_PAID
Wird hauptsächlich für Apps verwendet, die über beide weitergeleitet werden können OEM- und Nicht-OEM-Netzwerke.OEM_PRIVATE
Wird hauptsächlich für OEM-Apps verwendet, um Zugriff auf eine ein Netzwerk speziell für sie.
/** * 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 verwendest du PANS APIs:
- Verwenden Sie
OemNetworkPreferences
, um eine App einer Netzwerkeinstellung zuzuordnen. setOemNetworkPreference
mitOemNetworkPreferences
aufrufen -Objekt enthält.- Verwenden Sie die Schnittstelle
Runnable
, um auf die API-Vervollständigung 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
Beachte beim Implementieren von PANS die folgenden Punkte:
- Die Netzwerkeinstellungen werden beim Start nicht bei jedem Start beibehalten und müssen bei jedem Start neu angewendet.
- Wenn Sie eine Einstellung für eine App erstellen möchten, muss diese nicht installiert sein. Demnach entspricht „Network“ können die Einstellungen für deinstallierte Apps proaktiv vorgenommen werden.
- Eine App kann jeweils nur einer Netzwerkeinstellung zugeordnet werden.
- Netzwerkeinstellungen werden verwendet, um das Standardnetzwerk einer App festzulegen. Dies ist
Das Netzwerk, das verwendet wird, wenn für eine App nicht angegeben ist, welche Netzwerke sie nutzen möchte
einer der spezialisierten APIs. Das deckt nicht nur einen Großteil
der Konnektivitätsanforderungen ab,
Außerdem können spezielle APIs wie die
NetworkRequest
API weiterhin genutzt werden. damit bestehende App-Anwendungsfälle nicht beeinträchtigt werden. Wenn eine App z. B. nur eine Aktion ausführen möchte, funktioniert, erzwingt PANS die Verwendung eines anderen Netzwerks nicht.
Netzwerk konfigurieren
Ein Netzwerk mit OEM_PAID
oder OEM_PRIVATE
Funktionen müssen bei Verwendung einer entsprechenden Netzwerkeinstellung verfügbar sein. Android-Geräte
bietet Unterstützung für die Konfiguration von Funktionen für Ethernet- und WLAN-Netzwerke. Für
Ethernet-Netzwerken können Sie das Ressourcen-Overlay config_ethernet_interfaces
verwenden.
Diese wird bei der Kompilierung festgelegt.
Für WLAN kann die WifiNetworkSuggestion
API mit dem neuen
Android 12 APIs, setOemPaid(Boolean)
und
setOemPrivate(Boolean)
Dies kann während der Laufzeit geändert werden.
Betrachten Sie diese Beispiele:
- Ein Ressourcen-Overlay mit dem Namen
config_ethernet_interfaces
gibt Folgendes an: <ph type="x-smartling-placeholder">- </ph>
- 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
Ein Netzwerk mit OEM_PAID
oder OEM_PRIVATE
taggen
wird dieses Netzwerk als eingeschränktes Netzwerk gekennzeichnet. Eingeschränkte Netzwerke
kann nur von Apps verwendet werden,
CONNECTIVITY_USE_RESTRICTED_NETWORKS
-Berechtigung, die von den OEMs kontrolliert wird.
Apps mit dieser Berechtigung können eingeschränkte Netzwerke verwenden, sofern die Apps dies explizit anfordern . Diese Apps erhalten jedoch nicht standardmäßig eingeschränkte Netzwerke. Apps können eingeschränkte OEM-Netzwerke als Standard festgelegt sein. die eingeschränkte Netzwerkberechtigung haben, um sie zu verwenden. Wenn eine solche App eine eingeschränkte OEM-Netzwerk, das von PANS als Standardnetzwerk zugewiesen wird, ausdrücklich das OEM-Netzwerk anfordern, wenn die App dies wünscht.
Referenz-App überprüfen
Eine Referenz-App (einschließlich Code) mit dem Namen NetworkPreferenceApp
wird bereitgestellt.
in Automotive-Builds zur Fehlerbehebung durch Nutzer und zeigt, wie Sie:
- PANS-Messwerte abrufen.
- PANS-Richtlinie festlegen.
- Legen Sie eine Standardrichtlinie für das Gerät fest.
- Löschen Sie eine Richtlinie.
- Richtlinie beim Booten anwenden.
- Driver Distraction API verwenden (siehe Richtlinien zur Ablenkung von Fahrern).
- WLAN mit
OEM_PAID
undOEM_PRIVATE
dynamisch aktualisieren.
Abbildung 3: Referenz-App
Messwerte
Um die Transparenz der Datennutzung zu verbessern, werden Messwerte erfasst und erstellt.
in Bezug auf die Menge an Daten, die über den
Netzwerkzuordnungen für OEM_PAID
und OEM_PRIVATE
.
Fehlerbehebung
Die meisten Probleme treten auf, wenn eine App das falsche Netzwerk verwendet (keine Netzwerkverbindung) oder Datenüberschreitungen. So aktivierst du schnelle Lösungen:
- Die Verbindung
dumpsys
enthält eine Liste der aktiven App-Standardnetzwerke und die zugehörigen Apps (zugeordnet über PANS) - Netd
dumpsys
enthält UID-IP-Adressen und Firewallregeln. - Netstats
dumpsys
enthält PANS-Messwerte pro App. z. B. welche Apps welches OEM-Netzwerk verwendet haben.
Alle dumpsys
-Daten sind in einem Android-Fehlerbericht verfügbar.