Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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 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 do cả OEM và chủ phương tiện yêu cầu, dẫn đến lượng dữ liệu và chi phí liên quan tăng lên. Sử dụng tính năng Lựa chọn mạng cho mỗi ứng dụng (PANS) để định tuyến lưu lượng của các ứng dụng cụ thể trên các mạng do OEM trả tiề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. PANS:

  • Bao gồm một API mới được thêm vào ConnectivityManager chỉ khả dụng 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 cho kết nối internet ) để bao gồm hỗ trợ thay đổi động các khả năng của mạng PANS.
  • Thu thập các số liệu hỗ trợ.
  • Cung cấp một ứng dụng tham khảo.

Tại sao PANS?

PANS có thể:

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

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 mạng thay vì người dùng:
    • Các bản 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ụ thể có thể được cung cấp miễn phí cho người dùng.
    • Phép đo từ xa và các phân tích khác có thể được quản lý miễn phí cho người dùng.
  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 tính chi tiết của kiểm soát cụ thể cho định tuyến lưu lượng 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 cấp ứng dụng.

Hình 1 . Khung PANS

Triển khai PANS

Để triển khai PANS, một API ConnectivityManager mới, setOemNetworkPreference , được cung cấp. API mới này ánh xạ các ứng dụng tới OemNetworkPreference . API này chỉ có sẵn 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

OemNetworkPreference

OemNetworkPreference là một phần tóm tắt OEM_PAIDOEM_PRIVATE NetworkCapabilities các ứng dụng ánh xạ 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ụ: ánh xạ một ứng dụng tới tùy chọn OEM_NETWORK_PREFERENCE_OEM_PAID sẽ dẫn đến mức độ ưu tiên sau của các mạng mặc định được gán cho một ứng dụng: trước tiên hãy sử dụng mạng UNMETERED , nếu UNMETERED không khả dụng, hãy sử dụng mạng OEM_PAID và nếu OEM_PAID không khả dụng, 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ể đượ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ạ một ứng dụng tới một 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à sẽ 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, nó không cần phải được cài đặt. Do đó, bạn có thể chủ động đặt tùy chọn mạng cho các ứng dụng đã gỡ cài đặt.
  • 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 ứng dụng chưa chỉ định (các) mạng mà ứng dụng 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 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 biệt 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ột mạng không được đo lường, PANS sẽ không buộc nó phải sử dụng một 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 điểm 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 các 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 Mạng 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 độ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

Việc gắn thẻ mạng có khả năng OEM_PAID hoặc OEM_PRIVATE đá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à các ứng dụng yêu cầu chúng một cách rõ ràng . Tuy nhiên, các ứng dụng này sẽ không lấy các mạng bị hạn chế làm mặc định của chúng. Các ứng dụng được ánh xạ qua PANS có thể đã đặt các mạng OEM hạn chế làm mặc định của chúng và sẽ không cần quyền hạn chế của mạng để sử dụng chúng. Khi một ứng dụng như vậy có mạng OEM hạn chế được PANS chỉ định làm mạng mặc định của nó, nó 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.

Đánh giá ứng dụng tham khảo

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

  • Tiêu thụ các chỉ số PANS.
  • Đặt chính sách PANS.
  • Đặt chính sách mặc định cho thiết bị.
  • Rõ ràng một chính sách.
  • Áp dụng chính sách khi khởi động.
  • Sử dụng API phân tán của người lái xe (xem Nguyên tắc về sự phân tâm của 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 chỉ số đượ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 điều kiện khắc phục sự cố phát sinh do ứng dụng sử dụng mạng sai (không có kết nối mạng) hoặc dữ liệu trung bình. Để kích hoạt độ phân giải nhanh:

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

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