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

Các phương tiện ngày càng dựa vào khả năng kết nối để quản lý danh sách các trường hợp sử dụng ngày càng tăng theo yêu cầu của cả OEM và chủ sở hữu phương tiện, dẫn đến tăng lượng dữ liệu và chi phí liên quan. Sử dụng tính năng chọn mạng trên mỗi ứng dụng (PANS) để định tuyến lưu lượng truy cập của các ứng dụng được chỉ định trên các mạng do OEM thanh toán.

Với PANS, bạn có thể quản lý khối lượng và chi phí sử dụng dữ liệu đồng thời cung cấp trải nghiệm xe hơi mạnh mẽ, an toàn và được kết nối. Chảo:

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

Tại sao lại là PANS?

CHẢO có thể:

  • Tự động cập nhật ánh xạ ứng dụng tới mạng.
  • Quản lý định tuyến cấp ứng dụng mà không thực hiện thay đổi đối với ứng dụng.
  • Chỉ những ứng dụng được OEM cho phép mới có thể truy cập vào mạng OEM được ánh xạ.
  • 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.
  • Các chỉ số hướng tới người dùng theo dõi việc sử dụng dữ liệu từ ứng dụng đến mạng cho các mạng do OEM quản lý.
  • Quyền truy cập mạng được bảo mật và không thể bị lạm 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 ánh xạ ứng dụng với mạng PANS được thông báo tới người dùng.
  • Cấu hình mạng tương tự được áp dụng cho tất cả người dùng.

Lợi thế cốt lõi

PANS cung cấp cho OEMS những lợi thế cốt lõi sau:

  1. OEM có thể trả tiền cho lưu lượng truy cập mạng thay vì người dùng:
    • Cập nhật hệ thống có thể được cung cấp miễn phí cho người dùng.
    • Việc sử dụng mạng của các ứng dụng được chỉ định có thể được cung cấp miễn phí cho người dùng.
    • Người dùng có thể quản lý phép đo từ xa và các phân tích khác mà không mất phí.
  2. OEM có thể đảm bảo các ứng dụng quan trọng vẫn được kết nối ngay cả khi không có gói dữ liệu do người dùng trả phí. Ví dụ: các tính năng quan trọng về an toàn như bản đồ, trợ lý (lái xe rảnh tay) và cập nhật hệ thống tiếp tục hoạt động ngay cả khi người dùng không có gói dữ liệu.
  3. PANS cung cấp thêm mức độ kiểm soát cụ thể cho việc định tuyến lưu lượng truy cập mạng trong Android. Ví dụ: OEM có thể xác định một cách tối ưu cấu trúc liên kết mạng logic để đị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, API ConnectivityManager mới, setOemNetworkPreference , sẽ được cung cấp. API mới này ánh xạ các ứng dụng tới OemNetworkPreference . API này chỉ khả dụng cho các thiết bị ô tô và được chú thích là @SystemApi với quyền signature mới.

Hình 2. Triển khai PANS

OemMạngSở thích

OemNetworkPreference là một bản tóm tắt của các ứng dụng ánh xạ OEM_PAIDOEM_PRIVATE NetworkCapabilities theo tên gói với tùy chọn mạng . Tùy chọn mạng cho phép phân cấp mạng. Ví dụ: việc ánh xạ một ứng dụng tới tùy chọn OEM_NETWORK_PREFERENCE_OEM_PAID dẫn đến mức độ ưu tiên sau của các mạng mặc định được chỉ định cho một ứng dụng: trước tiên hãy sử dụng 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 khả dụng, hãy sử dụng mặc định của hệ thống mạng.

  • OEM_PAID Được sử dụng chủ yếu cho các ứng dụng có thể được định tuyến trên cả mạng OEM và không phải OEM.
  • OEM_PRIVATE Được sử dụng chủ yếu cho các ứng dụng OEM để có quyền truy cập vào mạng 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 API PANS

Để sử dụng API PANS:

  1. Sử dụng OemNetworkPreferences để ánh xạ ứng dụng tới tùy chọn mạng.
  2. Gọi setOemNetworkPreference với đối tượng OemNetworkPreferences .
  3. Sử dụng giao diện Runnable để lắng nghe 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);

Cân nhắc

Khi bạn triển khai PANS, hãy ghi nhớ những điểm sau:

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

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

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

Đối với Wi-Fi, API WifiNetworkSuggestion có thể được sử dụng với các API Android 12 mới, setOemPaid(Boolean)setOemPrivate(Boolean) . Điều này có thể được thay đổi trong thời gian chạy.

Hãy xem xét những ví dụ sau:

  1. Lớp phủ tài nguyên có tên config_ethernet_interfaces chỉ định:
    • Tên của giao diện để cấu hình.
    • Các 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. WiFiNetworkSuggestion này có thể được thay đổi linh hoạt:
    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

Việc gắn thẻ mạng bằng khả năng OEM_PAID hoặc OEM_PRIVATE sẽ đánh dấu mạng đó là mạng bị hạn chế . Các mạng bị hạn chế chỉ có thể được sử dụng bởi các ứng dụng có quyền CONNECTIVITY_USE_RESTRICTED_NETWORKS do OEM kiểm soát.

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

Xem lại ứng dụng tham khảo

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

  • Tiêu thụ số liệu PANS.
  • Đặt chính sách PANS.
  • Đặt chính sách mặc định cho thiết bị.
  • Xóa một chính sách.
  • Áp dụng chính sách khi khởi động.
  • Sử dụng API phân tâm người lái xe (xem Nguyên tắc phân tâm người lái xe ).
  • Tự động cập nhật Wi-Fi với OEM_PAIDOEM_PRIVATE .

Hình 3. Ứng dụng tham khảo

Số liệu

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

Xử lý sự cố

Hầu hết các tình trạng khắc phục sự cố đều phát sinh từ ứng dụng sử dụng sai mạng (không có kết nối mạng) hoặc do quá tải dữ liệu. Để bật độ phân giải nhanh:

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

Tất cả dữ liệu dumpsys đều có sẵn bằng cách tạo báo cáo lỗi Android.