Netzwerkauswahl pro Anwendung (PANS)

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:

  1. 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.
  2. 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.
  3. 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:

  1. Verwenden Sie OemNetworkPreferences, um eine App einer Netzwerkeinstellung zuzuordnen.
  2. setOemNetworkPreference mit OemNetworkPreferences aufrufen -Objekt enthält.
  3. 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:

  1. 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>
      
  2. 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 und OEM_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.