การเลือกเครือข่ายตามแอปพลิเคชัน (PANS)

ยานพาหนะอาศัยการเชื่อมต่อมากขึ้นเพื่อจัดการรายการ Use Case ที่เพิ่มขึ้นเรื่อยๆ ซึ่งทั้ง OEM และเจ้าของยานพาหนะต้องการใช้ ส่งผลให้มีการใช้ข้อมูลและต้นทุนที่เกี่ยวข้องเพิ่มขึ้น ใช้ฟีเจอร์การเลือกเครือข่ายต่อแอปพลิเคชัน (PANS) เพื่อกำหนดเส้นทางการรับส่งข้อมูลของแอปที่ระบุในเครือข่ายที่ OEM เป็นผู้ชำระเงิน

PANS ช่วยให้คุณจัดการปริมาณและต้นทุนของการใช้อินเทอร์เน็ตไปพร้อมๆ กับมอบประสบการณ์การใช้งานรถยนต์ที่เชื่อมต่อที่มีประสิทธิภาพ ปลอดภัย และเชื่อถือได้ PANS:

  • ประกอบด้วย API ใหม่ที่เพิ่มลงใน ConnectivityManager ซึ่งพร้อมใช้งานในอุปกรณ์ยานยนต์เท่านั้น
  • มี Wi-Fi Suggestion API ที่อัปเดตแล้ว (ดูWi-Fi Suggestion 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

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;

Call PANS APIs

วิธีใช้ PANS API

  1. ใช้ OemNetworkPreferences เพื่อจับคู่แอปกับค่ากำหนดเครือข่าย
  2. เรียกใช้ setOemNetworkPreference ด้วยออบเจ็กต์ OemNetworkPreferences
  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

  • ค่ากําหนดของเครือข่ายจะไม่คงอยู่ตลอดการบูตและจะต้องใช้ใหม่ทุกครั้งที่บูต
  • คุณไม่จำเป็นต้องติดตั้งแอปเพื่อสร้างค่ากําหนดของแอป ดังนั้นจึงตั้งค่ากำหนดเครือข่ายสำหรับแอปที่ถอนการติดตั้งแล้วได้
  • ในแต่ละครั้ง แอปจะแมปกับค่ากำหนดเครือข่ายได้เพียงค่าเดียวเท่านั้น
  • ค่ากําหนดเครือข่ายใช้เพื่อตั้งค่าเครือข่ายเริ่มต้นของแอป ซึ่งเป็นเครือข่ายที่ใช้เมื่อแอปไม่ได้ระบุเครือข่ายที่ต้องการใช้ผ่าน API เฉพาะ การดำเนินการนี้ไม่เพียงครอบคลุมความต้องการด้านการเชื่อมต่อส่วนใหญ่เท่านั้น แต่ยังช่วยให้ใช้ API เฉพาะทางได้อย่างต่อเนื่อง เช่น NetworkRequest API เพื่อไม่ให้กรณีการใช้งานแอปที่มีอยู่ขัดข้อง ตัวอย่างเช่น เมื่อแอปต้องการดำเนินการผ่านเครือข่ายที่ไม่จำกัดปริมาณเท่านั้น PANS จะไม่บังคับให้แอปใช้เครือข่ายอื่น

กำหนดค่าเครือข่าย

เครือข่ายที่พร้อมให้บริการด้วยความสามารถ OEM_PAID หรือ OEM_PRIVATE ต้องพร้อมใช้งานเมื่อใช้ค่ากำหนดเครือข่ายที่เกี่ยวข้อง Android รองรับการกำหนดค่าความสามารถของเครือข่ายอีเทอร์เน็ตและ Wi-Fi สำหรับเครือข่ายอีเทอร์เน็ต คุณสามารถใช้การซ้อนทับทรัพยากร config_ethernet_interfaces ซึ่งตั้งค่าไว้เมื่อคอมไพล์

สำหรับ Wi-Fi WifiNetworkSuggestion API สามารถใช้กับ API ใหม่ของ Android 12 ซึ่งได้แก่ 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_PAID หรือ OEM_PRIVATE จะทําให้เครือข่ายนั้นเป็นเครือข่ายที่จํากัด เครือข่ายที่จํากัดใช้ได้กับแอปที่มีสิทธิ์ CONNECTIVITY_USE_RESTRICTED_NETWORKS เท่านั้น ซึ่ง OEM จะเป็นผู้ควบคุม

แอปที่มีสิทธิ์นี้จะสามารถใช้เครือข่ายที่มีข้อจำกัดได้หากแอปขออย่างชัดเจน อย่างไรก็ตาม แอปเหล่านี้จะไม่ใช้เครือข่ายที่ถูกจํากัดเป็นค่าเริ่มต้น แอปที่แมปผ่าน PANS สามารถตั้งค่าเครือข่าย OEM แบบจำกัดเป็นค่าเริ่มต้นได้ และไม่จําเป็นต้องมีสิทธิ์เครือข่ายแบบจํากัดเพื่อใช้งาน เมื่อ PANS กําหนดเครือข่าย OEM ที่จํากัดเป็นเครือข่ายเริ่มต้นของแอปดังกล่าว แอปดังกล่าวจะขอเครือข่าย OEM ดังกล่าวได้อย่างชัดเจนหากต้องการ

ตรวจสอบแอปอ้างอิง

มีให้ใช้งานแอปอ้างอิง (รวมถึงโค้ด) ชื่อ NetworkPreferenceApp ในบิลด์ยานยนต์ที่แก้ไขข้อบกพร่องระดับผู้ใช้ และแสดงวิธีดำเนินการต่อไปนี้

  • ใช้เมตริก PANS
  • ตั้งค่านโยบาย PANS
  • ตั้งค่านโยบายเริ่มต้นสำหรับอุปกรณ์
  • ล้างนโยบาย
  • ใช้นโยบายในการบูต
  • ใช้ Driver Distraction API (ดูหลักเกณฑ์สิ่งรบกวนผู้ขับขี่)
  • อัปเดต Wi-Fi แบบไดนามิกด้วย OEM_PAID และ OEM_PRIVATE

รูปที่ 3 แอปอ้างอิง

เมตริก

ระบบจะรวบรวมและแสดงเมตริกเกี่ยวกับปริมาณข้อมูลที่ส่งผ่านการกำหนดค่าเครือข่าย OEM_PAID และ OEM_PRIVATE เพื่อให้เกิดความโปร่งใสในการใช้ข้อมูล

การแก้ปัญหา

เงื่อนไขการแก้ปัญหาส่วนใหญ่เกิดจากแอปที่ใช้เครือข่ายที่ไม่ถูกต้อง (ไม่มีการเชื่อมต่อเครือข่าย) หรือใช้อินเทอร์เน็ตเกินจากแพ็กเกจอินเทอร์เน็ต วิธีเปิดใช้การแก้ปัญหาอย่างรวดเร็ว

  • การเชื่อมต่อ dumpsys มีรายการเครือข่ายเริ่มต้นของแต่ละแอปที่ใช้งานอยู่และแอปที่เกี่ยวข้อง (แมปจาก PANS)
  • Netd dumpsys มี UID IP และกฎไฟร์วอลล์
  • Netstats dumpsys มีเมตริก PANS ต่อแอป เช่น แอปใดใช้เครือข่าย OEM ใด

ข้อมูล dumpsys ทั้งหมดจะพร้อมใช้งานเมื่อสร้างรายงานข้อบกพร่องของ Android