車輛越來越仰賴網路連線來管理不斷擴增的清單 原始設備製造商 (OEM) 和車輛擁有者要求的應用情境,導致 資料足跡與相關費用。使用每個應用程式的網路選項 (PANS) 功能可讓您針對付費的網路中的指定應用程式轉送流量 。
有了永久帳號 (PANS),你就能同時管理數據用量和費用, 讓使用者享有強大、安全的連線車輛體驗永久帳號:
- 包含新增至
ConnectivityManager
的可用 API 應用範圍僅限於車用裝置 - 提供更新版 Wi-Fi 建議 API (請參閱 適用於網際網路連線的 Wi-Fi Suggestion API) 納入支援動態變更 PANS 網路功能。
- 收集佐證指標。
- 提供參考應用程式。
為什麼要使用 PANS?
PANS 可以:
- 動態更新應用程式對網路的對應關係。
- 不必變更應用程式,即可管理應用程式層級轉送作業。
- 只有原始設備製造商 (OEM) 允許的應用程式才能存取對應的原始設備製造商 (OEM) 網路。
- 應用程式開發人員無須進行任何變更即可導入這項功能。
- 使用者導向的指標會追蹤原始設備製造商 (OEM) 管理的應用程式對網路數據用量 更是如此
- 網路存取權很安全,且不能透過非預期用途濫用; 未經授權的應用程式。
- 我們會將 PANS 應用程式對網路對應的變更傳達給使用者。
- 系統將為所有使用者套用相同的網路設定。
核心優勢
PANS 能為原始設備製造商 (OEM) 提供以下核心優勢:
- 原始設備製造商 (OEM) 可支付網路流量費用,而非使用者:
- 使用者可以免付費取得系統更新。
- 使用者可以免付費使用指定應用程式的網路用量。
- 使用者無須付費,即可管理遙測和其他數據分析。
- 原始設備製造商 (OEM) 可確保即使沒有安裝 使用者付費數據方案例如:地圖、Google 助理等安全的重要功能 不必動手行車) 和系統更新 使用者沒有數據方案時。
- PANS 可提供網路流量專屬的額外控管程度 也就是 Android 的轉送功能舉例來說,原始設備製造商 (OEM) 能以最佳方式定義邏輯網路 應用程式層級流量轉送的拓撲。
圖 1. PANS 架構
實作永久帳號
如要實作永久帳號 (PANS),我們推出了新的 ConnectivityManager
API。
提供了 setOemNetworkPreference
。
這個新的 API 會將應用程式對應至 OemNetworkPreference
。
這個 API 僅適用於車用裝置,且加註為
@SystemApi
(具備新的 signature
權限)。
圖 2. 實作永久帳號
OemNetworkPreference
OemNetworkPreference
是 OEM_PAID
和
OEM_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:
- 使用
OemNetworkPreferences
將應用程式對應至網路偏好設定。 - 使用
OemNetworkPreferences
呼叫setOemNetworkPreference
物件。 - 使用
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 時,請謹記以下幾點:
- 網路偏好設定不會跨啟動保留,因此必須 每次開機時都會重新套用
- 因此你不必安裝應用程式,即可建立偏好設定。因此,網路 已解除安裝應用程式的偏好設定。
- 應用程式一次只能對應到單一網路偏好設定。
- 網路偏好設定可用來設定應用程式的預設網路。這是
應用程式尚未指定要使用的網路時,所使用的網路
其中一個專門 API這項做法不僅涵蓋大多數的連線需求
還能繼續使用特殊 API,例如
NetworkRequest
API 以免破壞現有的應用程式用途舉例來說,如果應用程式只想 透過非計量付費網路執行 PANS 不會強制使用其他網路。
設定網路
具有 OEM_PAID
或 OEM_PRIVATE
的網路
才能使用相應的網路偏好設定。Android 版
支援乙太網路和 Wi-Fi 網路的設定。適用對象
乙太網路網路可以使用資源重疊 config_ethernet_interfaces
。
這是在編譯期間設定。
如果是 Wi-Fi,WifiNetworkSuggestion
API 可與新的
Android 12 API、setOemPaid(Boolean)
和
setOemPrivate(Boolean)
。你可在執行階段變更這項設定。
請參考以下例子:
- 名為
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>
- 這個
WiFiNetworkSuggestion
可以動態變更:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
限制 PANS 網路的存取權
使用 OEM_PAID
或 OEM_PRIVATE
標記網路
功能會將網路標示為「受限制的網路」。受限制的網路
「只能」由具備
CONNECTIVITY_USE_RESTRICTED_NETWORKS
權限,由原始設備製造商 (OEM) 控制。
如果應用程式明確要求,具有這項權限的應用程式可以使用受限制的網路 不過,這類應用程式不會預設使用受限制的網路。應用程式 透過 PANS 對應後,可以將受限制的 OEM 網路設為預設狀態,因此不需要 只有使用受限網路的權限這類應用程式會受到限制 原始設備製造商 (OEM) 網路已由 PANS 指派為預設網路,但也能 明確要求,並在應用程式選擇的情況下,明確要求 OEM 網路。
查看參考應用程式
系統提供名為 NetworkPreferenceApp
的參考應用程式 (包括程式碼)
並示範如何完成以下操作:
- 使用 PANS 指標。
- 設定永久帳號政策。
- 設定裝置的預設政策。
- 清除政策。
- 在啟動時套用政策。
- 使用 Driver Distraction API (請參閱駕駛人分心等級規範)。
- 使用
OEM_PAID
和OEM_PRIVATE
動態更新 Wi-Fi。
圖 3. 參考應用程式
指標
為協助您掌握資料使用情形,收集和分析指標
提供關於伺服器間傳輸的資料量
OEM_PAID
和 OEM_PRIVATE
網路對應。
疑難排解
問題發生原因,通常是應用程式使用錯誤的網路 (沒有網路連線) 或數據流量過高啟用快速解析度的步驟如下:
- 連線能力「
dumpsys
」內含一份已啟用的清單 個別應用程式的預設網路及相關聯的應用程式 (從 PANS 對應)。 - Netd
dumpsys
包含 UID IP 和防火牆規則。 - Netstats
dumpsys
包含每個應用程式的 PANS 指標。 例如使用原始設備製造商 (OEM) 網路的應用程式。
建立 Android 錯誤報告即可取得所有 dumpsys
資料。