การเลือกเครือข่ายสำหรับแต่ละแอปพลิเคชัน (PANS)

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

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

  • ประกอบด้วย API ใหม่ที่เพิ่มเข้ามาใน ConnectivityManager สำหรับอุปกรณ์ยานยนต์เท่านั้น
  • ให้ API คำแนะนำ Wi-Fi ที่อัปเดต (ดู API คำแนะนำ Wi-Fi สำหรับการเชื่อมต่ออินเทอร์เน็ต ) เพื่อรวมการสนับสนุนสำหรับความสามารถเครือข่าย PANS ที่เปลี่ยนแปลงแบบไดนามิก
  • รวบรวมเมตริกสนับสนุน
  • ให้แอปพลิเคชันอ้างอิง

ทำไมต้อง PAN?

กระทะสามารถ:

  • อัปเดตการแมประหว่างแอปพลิเคชันกับเครือข่ายแบบไดนามิก
  • จัดการการกำหนดเส้นทางระดับแอปพลิเคชันโดยไม่ต้องเปลี่ยนแปลงแอป
  • เฉพาะแอปพลิเคชันที่ได้รับอนุญาตจาก OEM เท่านั้นที่สามารถเข้าถึงเครือข่าย OEM ที่แมปได้
  • นักพัฒนาแอปพลิเคชันไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ เพื่อใช้งานคุณลักษณะนี้
  • เมตริกที่สัมพันธ์กับผู้ใช้จะติดตามการใช้ข้อมูลระหว่างแอปพลิเคชันกับเครือข่ายสำหรับเครือข่ายที่จัดการโดย OEM
  • การเข้าถึงเครือข่ายมีความปลอดภัยและไม่สามารถใช้ในทางที่ผิดผ่านกรณีการใช้งานที่ไม่ได้ตั้งใจหรือแอปพลิเคชันที่ไม่ได้รับอนุญาต
  • การเปลี่ยนแปลงการแมประหว่างแอปพลิเคชันกับเครือข่ายของ PANS จะแจ้งให้ผู้ใช้ทราบ
  • การกำหนดค่าเครือข่ายเดียวกันนี้ใช้กับผู้ใช้ทั้งหมด

ข้อดีหลัก

PANS มอบข้อดีหลักเหล่านี้แก่ OEMS:

  1. OEM สามารถจ่ายสำหรับการรับส่งข้อมูลเครือข่ายแทนผู้ใช้:
    • สามารถให้การอัปเดตระบบแก่ผู้ใช้ได้โดยไม่มีค่าใช้จ่าย
    • การใช้งานเครือข่ายของแอพที่ระบุสามารถให้ผู้ใช้ได้โดยไม่เสียค่าใช้จ่าย
    • สามารถจัดการ Telemetry และการวิเคราะห์อื่นๆ ได้โดยไม่มีค่าใช้จ่ายสำหรับผู้ใช้
  2. OEM สามารถมั่นใจได้ว่าแอปพลิเคชันที่สำคัญยังคงเชื่อมต่ออยู่แม้จะไม่มีแผนข้อมูลแบบชำระเงินโดยผู้ใช้ ตัวอย่างเช่น คุณลักษณะที่มีความสำคัญต่อความปลอดภัย เช่น แผนที่ ผู้ช่วย (การขับขี่แบบแฮนด์ฟรี) และการอัปเดตระบบจะยังคงทำงานแม้ในขณะที่ผู้ใช้ไม่มีแผนข้อมูล
  3. 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:

  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 สามารถใช้ได้กับ 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_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