Xe 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 tăng của các trường hợp sử dụng do cả nhà sản xuất thiết bị gốc (OEM) và chủ sở hữu xe yêu cầu, dẫn đến mức sử dụng dữ liệu và các chi phí liên quan tăng lên. Sử dụng tính năng chọn mạng theo ứ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 trả phí.
Với PANS, bạn có thể quản lý dung lượng và chi phí sử dụng dữ liệu, đồng thời mang lại trải nghiệm mạnh mẽ, an toàn và kết nối cho ô tô. PANS:
- 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) để hỗ trợ các tính năng mạng PANS thay đổi linh hoạt.
- 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 mối liên kết ứng dụng với mạng.
- Quản lý việc đị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.
- Nhà phát triển ứng dụng không cần thực hiện thay đổi nào để triển khai tính năng này.
- Các 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 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ợ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.
- Người dùng sẽ được thông báo về các thay đổi đối với mối liên kết ứng dụng với mạng PANS.
- Cấu hình mạng giống nhau được áp dụng cho tất cả người dùng.
Ưu điểm cốt lõi
PANS mang lại cho nhà sản xuất thiết bị gốc những lợi thế cốt lõi sau:
- OEM có thể trả tiền cho lưu lượng truy cập mạng thay vì người dùng:
- Người dùng có thể được cung cấp bản cập nhật hệ thống mà không mất phí.
- Người dùng có thể sử dụng mạng của các ứng dụng được chỉ định mà không mất phí.
- Người dùng có thể quản lý dữ liệu đo từ xa và các số liệu phân tích khác mà không mất phí.
- Nhà sản xuất thiết bị gốc (OEM) có thể đảm bảo các ứng dụng quan trọng vẫn kết nối được 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à bản cập nhật hệ thống sẽ tiếp tục hoạt động ngay cả khi người dùng không có gói dữ liệu.
- PANS cung cấp thêm thông tin chi tiết về quyền kiểm soát dành riêng 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 tối ưu cấu trúc 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, một API ConnectivityManager
mới, setOemNetworkPreference
, được cung cấp.
API mới này liên kết các ứng dụng với OemNetworkPreference
.
API này chỉ dành cho các thiết bị ô tô và được chú thích là @SystemApi
có quyền signature
mới.
Hình 2. Triển khai PANS
OemNetworkPreference
OemNetworkPreference
là một khái niệm trừu tượng trên OEM_PAID
và OEM_PRIVATE
NetworkCapabilities
liên kết các ứng dụng theo tên gói với một 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ụ: việc liên kết một ứng dụng với tuỳ chọn ưu tiên OEM_NETWORK_PREFERENCE_OEM_PAID
sẽ dẫn đến thứ tự ưu tiên sau đây của các mạng mặc định được chỉ định cho ứ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 không có OEM_PAID
, hãy sử dụng mạng mặc định của hệ thống.
OEM_PAID
Chủ yếu dùng cho các ứng dụng có thể được định tuyến trên cả mạng OEM và mạng không phải OEM.OEM_PRIVATE
Chủ yếu dùng cho các ứng dụng OEM để có quyền truy cập vào một 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
Cách sử dụng API PANS:
- Sử dụng
OemNetworkPreferences
để liên kết một ứng dụng với một lựa chọn ưu tiên về mạng. - Gọi
setOemNetworkPreference
bằng đối tượngOemNetworkPreferences
. - Sử dụng giao diện
Runnable
để theo dõi quá trình hoàn tất 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 triển khai PANS, hãy lưu ý những điểm sau:
- Lựa chọn ưu tiên về mạng không được duy trì trong các lần khởi động và cần được áp dụng lại trong mỗi lần khởi động.
- Để tạo một tuỳ chọn ưu tiên cho một ứng dụng, bạn không cần phải cài đặt ứng dụng đó. Do đó, bạn có thể chủ động đặt lựa chọn ưu tiên về 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 liên kết với một tuỳ chọn mạng duy nhất.
- Lựa chọn ưu tiên về mạng được dùng để đặt mạng mặc định của ứng dụng. Đây là mạng được 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 biệt. API này không chỉ đáp ứng hầu hết 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 làm gián đoạn 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 đo lượng dữ liệu, PANS sẽ không buộc ứng dụng đó sử dụng một mạng khác.
Định cấu hình mạng
Phải có một mạng có chức năng OEM_PAID
hoặc OEM_PRIVATE
khi sử dụng tuỳ chọn mạng tương ứng. Android hỗ trợ cấu hình các chức 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
.
Giá trị này được đặt tại thời điểm biên dịch.
Đối với Wi-Fi, bạn có thể sử dụng API WifiNetworkSuggestion
với các API Android 12 mới, setOemPaid(Boolean)
và setOemPrivate(Boolean)
. Bạn có thể thay đổi giá trị này trong thời gian chạy.
Hãy xem xét các ví dụ sau:
- Lớp phủ tài nguyên có tên
config_ethernet_interfaces
chỉ định:- Tên của giao diện cần định 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>
- 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
Việc gắn thẻ một mạng bằng các chức năng OEM_PAID
hoặc OEM_PRIVATE
sẽ đánh dấu mạng đó là mạng bị hạn chế. Chỉ những ứng dụng có quyền CONNECTIVITY_USE_RESTRICTED_NETWORKS
do nhà sản xuất thiết bị gốc (OEM) kiểm soát mới có thể duy nhất sử dụng mạng bị hạn chế.
Các ứng dụng có quyền này có thể sử dụng mạng bị hạn chế miễn là ứng dụng yêu cầu rõ ràng các mạng đó. Tuy nhiên, các ứng dụng này sẽ không được đặt mạng bị hạn chế làm mạng mặc định. Các ứng dụng được liên kết thông qua PANS có thể đặt mạng OEM bị hạn chế làm mạng mặc định và sẽ không cần quyền mạng bị hạn chế để sử dụng các mạng đó. Khi một ứng dụng như vậy có mạng OEM bị hạn chế được chỉ định làm mạng mặc định của PANS, ứng dụng đó cũng có thể yêu cầu rõ ràng mạng OEM đó nếu ứng dụng chọn làm như vậy.
Xem xét ứng dụng tham chiếu
Ứng dụng tham chiếu (bao gồm cả 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à minh hoạ cách:
- Sử dụng các chỉ số PANS.
- Đặt chính sách PANS.
- Đặt chính sách mặc định cho thiết bị.
- Xoá chính sách.
- Áp dụng chính sách khi khởi động.
- Sử dụng API Driver Distraction (Tài xế mất tập trung) (xem Nguyên tắc về tài xế mất tập trung).
- Cập nhật động Wi-Fi bằng
OEM_PAID
vàOEM_PRIVATE
.
Hình 3. Ứng dụng tham khảo
Chỉ số
Để đảm bảo tính 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 các mối liên kết mạng OEM_PAID
và OEM_PRIVATE
.
Khắc phục sự cố
Hầu hết các điều kiện khắc phục sự cố đều phát sinh do ứng dụng sử dụng sai mạng (không có kết nối mạng) hoặc do vượt quá hạn mức dữ liệu. Cách bật tính năng giải quyết nhanh:
- Connectivity
dumpsys
bao 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 liên kết từ PANS). - Netd
dumpsys
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 theo ứng dụng. Ví dụ: ứng dụng nào sử dụng mạng OEM nào.
Bạn có thể xem tất cả dữ liệu dumpsys
bằng cách tạo báo cáo lỗi Android.