Lựa chọn mạng cho mỗi ứng dụng (PANS)

Các phương tiện vận tải ngày càng phụ thuộc vào khả năng kết nối để quản lý danh sách ngày càng nhiều trường hợp sử dụng theo yêu cầu của cả OEM và chủ sở hữu xe, dẫn đến việc tăng trọng khối dữ liệu và các chi phí liên quan. Sử dụng lựa chọn mạng cho mỗi ứng dụng (PANS) để định tuyến lưu lượng truy cập của các ứng dụng cụ thể trên các mạng mà họ trả phí bởi OEM (Nhà sản xuất thiết bị gốc).

Với PANS, bạn có thể quản lý lượng dữ liệu và chi phí sử dụng dữ liệu cùng một lúc mang đến trải nghiệm mạnh mẽ, an toàn và kết nối trên ô tô. PANS:

  • Bao gồm một API mới được thêm vào ConnectivityManager có sẵn chỉ áp dụng cho các thiết bị trên ô tô.
  • Cung cấp API đề xuất Wi-Fi mới (xem API đề xuất Wi-Fi để kết nối Internet) để hỗ trợ khả năng thay đổi linh động của mạng PANS.
  • Thu thập các chỉ số hỗ trợ.
  • Cung cấp ứng dụng tham chiếu.

Tại sao nên sử dụng PANS?

PANS có thể:

  • Tự động cập nhật các liên kết từ ứng dụng đến mạng.
  • Quản lý định tuyến cấp ứng dụng mà không cần thay đổi ứng dụng.
  • Chỉ những ứng dụng được OEM cho phép mới có thể truy cập vào các mạng OEM đã liên kết.
  • Các nhà phát triển ứng dụng không cần thực hiện bất kỳ thay đổi nào để triển khai tính năng này.
  • Chỉ số dành cho người dùng theo dõi mức sử dụng dữ liệu từ ứng dụng đến mạng đối với sản phẩm do OEM quản lý mạng.
  • Quyền truy cập mạng là an toàn và không thể bị lợi dụng thông qua các trường hợp sử dụng ngoài ý muốn hoặc ứng dụng trái phép.
  • Những thay đổi đối với việc liên kết ứng dụng với mạng của PANS sẽ được thông báo cho người dùng.
  • Cùng một cấu hình mạng được áp dụng cho tất cả người dùng.

Ưu điểm cốt lõi

PANS cung cấp cho OEMS những ưu điểm cốt lõi sau đây:

  1. OEM có thể trả tiền cho lưu lượng truy cập mạng thay vì người dùng:
    • Có thể cung cấp miễn phí bản cập nhật hệ thống cho người dùng.
    • Có thể cho phép người dùng sử dụng miễn phí mạng của các ứng dụng đã chỉ định.
    • Người dùng có thể quản lý dữ liệu đo từ xa và các hoạt động phân tích khác mà không tốn phí.
  2. OEM có thể đảm bảo các ứng dụng quan trọng duy trì kết nối ngay cả khi không có gói dữ liệu do người dùng trả tiền. Ví dụ: các tính năng đảm bảo an toàn như bản đồ, trợ lý (lái xe rảnh tay) và các bản cập nhật hệ thống tiếp tục hoạt động ngay cả khi khi người dùng không có gói dữ liệu.
  3. PANS cung cấp thêm chi tiết về việc kiểm soát dành riêng cho lưu lượng truy cập mạng định tuyến trong Android. Ví dụ: OEM có thể xác định tối ưu một mạng logic cấu trúc liên kết để định tuyến lưu lượng truy cập cấp ứng dụng.

Hình 1 khung PANS

Triển khai PANS

Để triển khai PANS, một API ConnectivityManager mới, Giá trị setOemNetworkPreference sẽ được cung cấp. API mới này ánh xạ các ứng dụng với một OemNetworkPreference. API này chỉ dành cho các thiết bị trên ô tô và được chú thích là @SystemApi với quyền signature mới.

Hình 2. Triển khai PANS

Lựa chọn ưu tiên mạng

OemNetworkPreference là một khái niệm trừu tượng trên OEM_PAIDOEM_PRIVATE NetworkCapabilities ánh xạ ứng dụng theo tên gói thành lựa chọn ưu tiên về mạng. Lựa chọn ưu tiên về mạng cho phép phân cấp mạng. Ví dụ: liên kết một ứng dụng với lựa chọn ưu tiên OEM_NETWORK_PREFERENCE_OEM_PAID dẫn đến mức độ ưu tiên sau đây trong các mạng mặc định được gán cho một ứng dụng: sử dụng trước tiên là mạng UNMETERED, nếu không có UNMETERED, hãy sử dụng mạng OEM_PAID và nếu OEM_PAID không có sẵn, hãy sử dụng hệ thống mạng mặc định.

  • OEM_PAID Được sử dụng chủ yếu cho các ứng dụng có thể định tuyến trên cả hai nền tảng mạng của nhà sản xuất thiết bị gốc (OEM) và không phải của nhà sản xuất thiết bị gốc.
  • OEM_PRIVATE Được dùng chủ yếu cho các ứng dụng OEM để có quyền truy cập vào dành riêng cho chúng.
/**
* 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;

Gọi các API PANS

Cách sử dụng API PANS:

  1. Sử dụng OemNetworkPreferences để ánh xạ một ứng dụng với lựa chọn ưu tiên mạng.
  2. Gọi setOemNetworkPreference bằng OemNetworkPreferences .
  3. Sử dụng giao diện Runnable để theo dõi quá trình hoàn thành API.

Ví dụ:

// 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);

Những yếu tố nên cân nhắc

Khi bạn triển khai PANS, hãy lưu ý những điểm sau:

  • Các lựa chọn ưu tiên về mạng không được duy trì trên các lần khởi động và cần được đặt được áp dụng lại cho mỗi lần khởi động.
  • Để tạo lựa chọn ưu tiên cho một ứng dụng, bạn không cần phải cài đặt lựa chọn ưu tiên đó. Do đó, mạng có thể chủ động đặt các lựa chọn ưu tiên cho ứng dụng đã gỡ cài đặt.
  • Tại thời điểm bất kỳ, bạn chỉ có thể liên kết một ứng dụng tới một lựa chọn ưu tiên mạng duy nhất.
  • Chế độ ưu tiên mạng dùng để đặt mạng mặc định cho một ứng dụng. Đây là mạng được sử dụng khi ứng dụng không chỉ định(các) mạng nào ứng dụng muốn sử dụng thông qua một trong những API chuyên biệt. Điều này không chỉ đáp ứng phần lớn các nhu cầu kết nối, tuỳ chọn này cũng cho phép tiếp tục sử dụng các API chuyên biệt, chẳng hạn như API NetworkRequest để không làm hỏng các trường hợp sử dụng hiện có của ứng dụng. Ví dụ: khi một ứng dụng chỉ muốn thực hiện một hoạt động qua mạng không đo lượng dữ liệu, thì PANS sẽ không buộc mạng này dùng một mạng khác.

Định cấu hình mạng

Một mạng có OEM_PAID hoặc OEM_PRIVATE phải có khả năng khi sử dụng lựa chọn ưu tiên mạng tương ứng. của Android cung cấp hỗ trợ cho cấu hình các tính năng của mạng Ethernet và Wi-Fi. Cho Mạng Ethernet, bạn có thể sử dụng lớp phủ tài nguyên config_ethernet_interfaces. Giá trị này được đặt tại thời gian biên dịch.

Đối với Wi-Fi, bạn có thể sử dụng API WifiNetworkSuggestion với API Android 12, setOemPaid(Boolean)setOemPrivate(Boolean). Bạn có thể thay đổi chế độ này trong thời gian chạy.

Hãy xem các ví dụ sau:

  1. Lớp phủ tài nguyên có tên config_ethernet_interfaces chỉ định:
    • Tên giao diện cần định cấu hình.
    • Giá trị NetworkCapabilities mong muốn.
      <!-- 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. Bạn có thể thay đổi WiFiNetworkSuggestion này một cách linh động:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Hạn chế quyền truy cập vào mạng PANS

Gắn thẻ mạng bằng OEM_PAID hoặc OEM_PRIVATE các chức năng sẽ đánh dấu mạng đó là mạng bị hạn chế. Mạng bị hạn chế chỉ có thể sử dụng bởi những ứng dụng có Quyền CONNECTIVITY_USE_RESTRICTED_NETWORKS do OEM kiểm soát.

Các ứng dụng được cấp quyền này có thể sử dụng mạng bị hạn chế miễn là các ứng dụng đó yêu cầu rõ ràng chúng. Tuy nhiên, các ứng dụng này sẽ không dùng mạng bị hạn chế làm mạng mặc định. Chiến dịch Quảng cáo ứng dụng được ánh xạ qua PANS có thể đặt các mạng OEM bị hạn chế làm mặc định và sẽ không cần quyền sử dụng mạng bị hạn chế. Khi một ứng dụng như vậy có chế độ hạn chế Mạng OEM do PANS chỉ định làm mạng mặc định, mạng này cũng có khả năng yêu cầu rõ ràng mạng OEM đã nêu nếu ứng dụng chọn làm như vậy.

Xem lại ứng dụng tham chiếu

Đã cung cấp một ứng dụng tham chiếu (bao gồm cả mã) có tên NetworkPreferenceApp trong các bản dựng ô tô gỡ lỗi người dùng và trình bày cách:

  • Sử dụng chỉ số PANS.
  • Đặt chính sách PANS.
  • Đặt chính sách mặc định cho thiết bị.
  • Xoá một chính sách.
  • Áp dụng một chính sách khi khởi động.
  • Dùng Driver Distraction API (xem Nguyên tắc để mất sự phân tâm của người lái xe).
  • Tự động cập nhật Wi-Fi bằng OEM_PAIDOEM_PRIVATE.

Hình 3. Ứng dụng tham chiếu

Chỉ số

Để tạo điều kiện minh bạch về việc sử dụng dữ liệu, các chỉ số được thu thập và lập ra liên quan đến lượng dữ liệu được truyền qua Liên kết mạng OEM_PAIDOEM_PRIVATE.

Khắc phục sự cố

Hầu hết các điều kiện khắc phục sự cố phát sinh từ việc một ứng dụng dùng sai mạng (không có kết nối mạng) hoặc sử dụng dữ liệu quá mức. Cách bật chế độ giải quyết nhanh:

  • Kết nối dumpsys bao gồm danh sách những kết nối đang hoạt động mạng mặc định cho mỗi ứng dụng và ứng dụng liên kết với các mạng đó (được ánh xạ từ PANS).
  • dumpsys Netd bao gồm IP UID và các quy tắc tường lửa.
  • Netstats dumpsys bao gồm các chỉ số PANS cho mỗi ứng dụng. Ví dụ: ứng dụng nào đã dùng mạng OEM nào.

Bạn có thể tạo tất cả dữ liệu dumpsys bằng cách tạo báo cáo lỗi Android.