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