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

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

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

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

ทำไมจึงต้องใช้ PANS

PANS สามารถทำสิ่งต่อไปนี้ได้

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

ประโยชน์หลัก

PANS นำเสนอข้อได้เปรียบหลักๆ จาก OEMS ดังต่อไปนี้

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

รูปที่ 1 เฟรมเวิร์ก PANS

ใช้ PANS

หากต้องการใช้ PANS ซึ่งเป็น API ใหม่ของ ConnectivityManager มีการระบุ setOemNetworkPreference API ใหม่นี้จะจับคู่แอปกับ OemNetworkPreference API นี้ใช้ได้เฉพาะกับอุปกรณ์ยานยนต์ และมีคำอธิบายประกอบเป็น @SystemApi ที่มีสิทธิ์ใหม่เป็น signature

รูปที่ 2 ใช้ PANS

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

OemNetworkPreference เป็นนามธรรมในช่วง OEM_PAID และ แอปการแมป NetworkCapabilities OEM_PRIVATE แอปตามชื่อแพ็กเกจ ไปยังค่ากำหนดเครือข่าย การตั้งค่าเครือข่ายทำให้มีลำดับชั้นของเครือข่ายได้ เช่น การแมปแอปกับค่ากำหนด OEM_NETWORK_PREFERENCE_OEM_PAID จะส่งผลให้เกิดลำดับความสำคัญต่อไปนี้ของเครือข่ายเริ่มต้นที่กำหนดให้กับแอป: ใช้ เครือข่าย UNMETERED ก่อน หาก UNMETERED ไม่พร้อมใช้งาน ให้ใช้ เครือข่าย OEM_PAID และหาก OEM_PAID ไม่พร้อมใช้งาน ให้ใช้ระบบ เครือข่ายเริ่มต้น

  • OEM_PAID ใช้สำหรับแอปที่กำหนดเส้นทางได้บนทั้ง 2 แบบเป็นหลัก เครือข่าย 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 ความสามารถต้องมีพร้อมใช้งานเมื่อใช้ค่ากำหนดเครือข่ายที่เกี่ยวข้อง แอนดรอยด์ ให้การสนับสนุนการกำหนดค่าความสามารถสำหรับเครือข่ายอีเทอร์เน็ตและ 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

การแก้ปัญหา

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

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

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