ยานพาหนะพึ่งพาการเชื่อมต่อมากขึ้นเรื่อยๆ เพื่อจัดการรายการกรณีการใช้งานที่เพิ่มขึ้นซึ่งร้องขอโดยทั้ง OEM และเจ้าของรถ ส่งผลให้มีข้อมูลและค่าใช้จ่ายที่เกี่ยวข้องเพิ่มขึ้น ใช้คุณลักษณะ การเลือกเครือข่ายต่อแอปพลิเคชัน (PANS) เพื่อกำหนดเส้นทางการรับส่งข้อมูลของแอปพลิเคชันที่ระบุบนเครือข่ายที่ OEM จ่ายให้
ด้วย PANS คุณสามารถจัดการปริมาณและค่าใช้จ่ายของการใช้ข้อมูลในขณะเดียวกันก็มอบประสบการณ์รถที่แข็งแกร่ง ปลอดภัย และเชื่อมต่อได้ กระทะ:
- ประกอบด้วย API ใหม่ที่เพิ่มเข้ามาใน
ConnectivityManager
สำหรับอุปกรณ์ยานยนต์เท่านั้น - ให้ API คำแนะนำ Wi-Fi ที่อัปเดต (ดู API คำแนะนำ Wi-Fi สำหรับการเชื่อมต่ออินเทอร์เน็ต ) เพื่อรวมการสนับสนุนสำหรับความสามารถเครือข่าย PANS ที่เปลี่ยนแปลงแบบไดนามิก
- รวบรวมเมตริกสนับสนุน
- ให้แอปพลิเคชันอ้างอิง
ทำไมต้อง PAN?
กระทะสามารถ:
- อัปเดตการแมประหว่างแอปพลิเคชันกับเครือข่ายแบบไดนามิก
- จัดการการกำหนดเส้นทางระดับแอปพลิเคชันโดยไม่ต้องเปลี่ยนแปลงแอป
- เฉพาะแอปพลิเคชันที่ได้รับอนุญาตจาก OEM เท่านั้นที่สามารถเข้าถึงเครือข่าย OEM ที่แมปได้
- นักพัฒนาแอปพลิเคชันไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ เพื่อใช้งานคุณลักษณะนี้
- เมตริกที่สัมพันธ์กับผู้ใช้จะติดตามการใช้ข้อมูลระหว่างแอปพลิเคชันกับเครือข่ายสำหรับเครือข่ายที่จัดการโดย OEM
- การเข้าถึงเครือข่ายมีความปลอดภัยและไม่สามารถใช้ในทางที่ผิดผ่านกรณีการใช้งานที่ไม่ได้ตั้งใจหรือแอปพลิเคชันที่ไม่ได้รับอนุญาต
- การเปลี่ยนแปลงการแมประหว่างแอปพลิเคชันกับเครือข่ายของ PANS จะแจ้งให้ผู้ใช้ทราบ
- การกำหนดค่าเครือข่ายเดียวกันนี้ใช้กับผู้ใช้ทั้งหมด
ข้อดีหลัก
PANS มอบข้อดีหลักเหล่านี้แก่ OEMS:
- OEM สามารถจ่ายสำหรับการรับส่งข้อมูลเครือข่ายแทนผู้ใช้:
- สามารถให้การอัปเดตระบบแก่ผู้ใช้ได้โดยไม่มีค่าใช้จ่าย
- การใช้งานเครือข่ายของแอพที่ระบุสามารถให้ผู้ใช้ได้โดยไม่เสียค่าใช้จ่าย
- สามารถจัดการ Telemetry และการวิเคราะห์อื่นๆ ได้โดยไม่มีค่าใช้จ่ายสำหรับผู้ใช้
- OEM สามารถมั่นใจได้ว่าแอปพลิเคชันที่สำคัญยังคงเชื่อมต่ออยู่แม้จะไม่มีแผนข้อมูลแบบชำระเงินโดยผู้ใช้ ตัวอย่างเช่น คุณลักษณะที่มีความสำคัญต่อความปลอดภัย เช่น แผนที่ ผู้ช่วย (การขับขี่แบบแฮนด์ฟรี) และการอัปเดตระบบจะยังคงทำงานแม้ในขณะที่ผู้ใช้ไม่มีแผนข้อมูล
- PANS ให้รายละเอียดเพิ่มเติมของการควบคุมเฉพาะสำหรับการกำหนดเส้นทางการรับส่งข้อมูลเครือข่ายใน Android ตัวอย่างเช่น OEM สามารถกำหนดโทโพโลยีเครือข่ายแบบลอจิคัลได้อย่างเหมาะสมสำหรับการกำหนดเส้นทางการรับส่งข้อมูลระดับแอปพลิเคชัน
รูปที่ 1 . กรอบงาน PAN
การใช้งาน PANS
ในการใช้งาน PANS จะมีการจัดเตรียม ConnectivityManager
API ใหม่ setOemNetworkPreference
API ใหม่นี้จับคู่แอปพลิเคชันกับ OemNetworkPreference
API นี้ใช้ได้เฉพาะกับอุปกรณ์ยานยนต์และมีคำอธิบายประกอบเป็น @SystemApi
พร้อมการอนุญาต signature
ใหม่
รูปที่ 2 ใช้ PANS
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
เพื่อจับคู่แอปกับการตั้งค่าเครือข่าย - เรียก
setOemNetworkPreference
ด้วยวัตถุOemNetworkPreferences
- ใช้อินเทอร์เฟซ
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
- กำหนดนโยบาย PANS
- กำหนดนโยบายเริ่มต้นสำหรับอุปกรณ์
- ล้างนโยบาย
- ใช้นโยบายในการบูต
- ใช้ Driver Distraction API (ดู แนวทาง การเบี่ยงเบนความสนใจของผู้ขับขี่ )
- อัปเดต Wi-Fi แบบไดนามิกด้วย
OEM_PAID
และOEM_PRIVATE
รูปที่ 3 แอพอ้างอิง
ตัวชี้วัด
เพื่ออำนวยความสะดวกในการใช้งานข้อมูลอย่างโปร่งใส ระบบจึงรวบรวมและจัดทำเมตริกเกี่ยวกับปริมาณข้อมูลที่ส่งผ่านการจับคู่เครือข่าย OEM_PAID
และ OEM_PRIVATE
การแก้ไขปัญหา
เงื่อนไขการแก้ไขปัญหาส่วนใหญ่เกิดขึ้นจากแอปพลิเคชันที่ใช้เครือข่ายที่ไม่ถูกต้อง (ไม่มีการเชื่อมต่อเครือข่าย) หรือข้อมูลเกินกำหนด วิธีเปิดใช้งานการแก้ปัญหาอย่างรวดเร็ว:
- Connectivity
dumpsys
รวมรายการของเครือข่ายเริ่มต้นต่อแอพที่ใช้งานและแอพพลิเคชั่นที่เกี่ยวข้อง (แมปจาก PANS) - Netd
dumpsys
รวมถึง UID IP และกฎไฟร์วอลล์ - Netstats
dumpsys
รวมเมตริก PANS ต่อแอปพลิเคชัน ตัวอย่างเช่น แอปพลิเคชันใดใช้เครือข่าย OEM ใด
ข้อมูล dumpsys
ทั้งหมดมีให้โดยการสร้างรายงานข้อบกพร่องของ Android