每個應用程序網絡選擇 (PANS)

車輛越來越依賴連接來管理原始設備製造商和車主要求的越來越多的用例,導致數據足跡和相關成本增加。使用每個應用程序的網絡選擇(PANS)功能,路由指定應用程序的業務由OEM支付網絡。

借助 PANS,您可以管理數據使用量和成本,同時提供強大、安全和聯網的汽車體驗。潘斯:

  • 由加入到一個新的API的ConnectivityManager只提供給汽車裝置。
  • 提供了更新的Wi-Fi建議API(見互聯網連接的Wi-Fi建議API ),包括用於動態改變PANS網絡功能的支持。
  • 收集支持指標。
  • 提供參考應用。

為什麼是PANS?

PANS 可以:

  • 動態更新應用程序到網絡的映射。
  • 無需更改應用程序即可管理應用程序級路由。
  • 只有 OEM 允許的應用程序才能訪問映射的 OEM 網絡。
  • 應用程序開發人員無需進行任何更改即可實現此功能。
  • 面向用戶的指標跟踪 OEM 託管網絡的應用程序到網絡數據使用情況。
  • 網絡訪問是安全的,不會被意外用例或未經授權的應用程序濫用。
  • PANS 應用程序到網絡映射的更改會傳達給用戶。
  • 所有用戶都應用相同的網絡配置。

核心優勢

PANS 為 OEM 提供以下核心優勢:

  1. OEM 可以為網絡流量而不是用戶付費:
    • 可以免費向用戶提供系統更新。
    • 可以免費向用戶提供指定應用程序的網絡使用情況。
    • 用戶可以免費管理遙測和其他分析。
  2. 即使沒有用戶付費的數據計劃,OEM 也可以確保關鍵應用程序保持連接。例如,即使用戶沒有數據計劃,地圖、助手(免提駕駛)和系統更新等安全關鍵功能也會繼續運行。
  3. PANS 提供了特定於 Android 中網絡流量路由的額外控製粒度。例如,OEM 可以為應用程序級流量的路由優化定義邏輯網絡拓撲。

圖1。 PANS框架

實施PANS

為了實現PANS,新ConnectivityManager API, setOemNetworkPreference ,提供。這個新的API映射應用到OemNetworkPreference 。該API僅適用於車載設備,並標註為@SystemApi一個新的signature許可。

圖2.實施PANS

OEM網絡偏好

OemNetworkPreference超過一個抽象OEM_PAIDOEM_PRIVATE NetworkCapabilities映射應用程序由包名稱到網絡偏好。網絡首選項允許網絡層次結構。例如,一個應用程序映射到OEM_NETWORK_PREFERENCE_OEM_PAID偏好將導致網絡的以下優先級:使用一個UNMETERED第一網絡中,如果UNMETERED不可使用OEM_PAID網絡,並且如果OEM_PAID不可用,使用系統的默認網絡。

  • OEM_PAID主要用於可以同時在OEM和非OEM網絡路由應用。
  • OEM_PRIVATE主要用來OEM應用程式來訪問一個專門為他們的網絡。
/**
* 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 API

要使用 PANS API:

  1. 使用OemNetworkPreferences映射一個應用程序的網絡偏好。
  2. 呼叫setOemNetworkPreferenceOemNetworkPreferences對象。
  3. 使用Runnable接口來監聽API完成。

例如:

// 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);

注意事項

在實施 PANS 時,請記住以下幾點:

  • 網絡首選項不會跨啟動保留,並且需要在每次啟動時重新應用。
  • 要為應用程序創建首選項,不需要安裝它。因此,可以主動設置已卸載應用程序的網絡首選項。
  • 在任何給定時間,一個應用程序只能映射到一個網絡首選項。

配置網絡

與任一所述的網絡OEM_PAIDOEM_PRIVATE能力使用相應的網絡偏好時必須可用。 Android 為以太網和 Wi-Fi 網絡的功能配置提供支持。對於以太網網絡,可以使用的資源疊加, config_ethernet_interfaces 。這是在編譯時設置的。

對於無線網絡連接,所述WifiNetworkSuggestion API可以與新的Android 12的API使用, setOemPaid(Boolean)setOemPrivate(Boolean) 。這可以在運行時更改。

考慮以下示例:

  1. 資源覆蓋命名config_ethernet_interfaces指定:
    • 要配置的接口的名稱。
    • 所需NetworkCapabilities值。
      <!-- 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. WiFiNetworkSuggestion可以動態改變:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

限制對 PANS 網絡的訪問

標記網絡與任一OEM_PAIDOEM_PRIVATE功能標記該網絡為受限網絡。受限網絡只能由具有應用程序可以使用CONNECTIVITY_USE_RESTRICTED_NETWORKS權限,這是由OEM控制。

擁有此權限的應用程序可以使用受限制所提供的應用程序明確要求他們的網絡。但是,這些應用程序的默認網絡不會受到限制。通過 PANS 映射的應用程序可以將受限 OEM 網絡設置為默認值,並且不需要受限網絡權限即可使用它們。當此類應用程序具有被 PANS 分配為其默認網絡的受限 OEM 網絡時,如果應用程序選擇這樣做,它也可以明確請求所述 OEM 網絡。

查看參考應用程序

命名為A參考的應用程序(包括代碼) NetworkPreferenceApp在用戶調試提供汽車構建和演示了如何:

  • 使用 PANS 指標。
  • 設置 PANS 策略。
  • 為設備設置默認策略。
  • 清除政策。
  • 在啟動時應用策略。
  • 使用駕駛者分心API(見司機分心準則)。
  • 動態地更新的Wi-Fi OEM_PAIDOEM_PRIVATE

圖3.參考應用

指標

為了方便各地數據使用的透明度,指標的收集和關於在傳輸的數據量提供OEM_PAIDOEM_PRIVATE網絡映射。

故障排除

大多數故障排除條件來自使用錯誤網絡(無網絡連接)的應用程序或數據過量。要啟用快速解決方案:

  • 連接dumpsys包括有源每個應用默認網絡及其相關聯的應用程序的列表(來自PANS映射)。
  • 寧波開發區dumpsys包括UID IP和防火牆規則。
  • Netstats dumpsys包括PANS每個應用程序的指標。例如,哪些應用程序使用了哪些 OEM 網絡。

所有dumpsys數據可通過創建一個Android bug報告。