Các thiết bị Android không có số dư dữ liệu sẽ cho phép lưu lượng truy cập mạng đi qua, yêu cầu các nhà mạng và công ty viễn thông triển khai các giao thức giảm thiểu. Android triển khai một giải pháp chung cho phép nhà mạng và công ty viễn thông cho biết thời điểm thiết bị hết số dư.
Nền tảng Android cung cấp một ứng dụng nhà mạng mặc định với hành vi mặc định để giảm lưu lượng truy cập dựa trên tín hiệu phát hiện trang xác thực. Ngoài ra, API này còn mang đến cho các nhà mạng và OEM cơ hội tuỳ chỉnh hành vi với chi phí thấp và tính linh hoạt cao.
Ví dụ và nguồn
Ứng dụng mặc định của hãng vận chuyển nằm ở platform/frameworks/base/packages/CarrierDefaultApp/.
Triển khai
Ứng dụng mặc định của hãng vận chuyển được định cấu hình để mang lại trải nghiệm tốt hơn cho các hãng vận chuyển chưa được định cấu hình. Nhà mạng có thể sử dụng hành vi mặc định này. Họ cũng có thể ghi đè hành vi mặc định bằng cách thêm các mối liên kết giữa tín hiệu và hành động vào tệp XML cấu hình của nhà mạng. Họ có thể quyết định không sử dụng ứng dụng mặc định mà thay vào đó sử dụng các đặc quyền UICC với ứng dụng nhà mạng độc lập của riêng họ.
Giới thiệu về việc triển khai
Tín hiệu
Khung Android hỗ trợ việc định cấu hình các thao tác cho những tín hiệu được tham số hoá sau:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Các tín hiệu này nằm trong frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Thao tác được hỗ trợ
Ứng dụng nhà mạng mặc định xác định một tập hợp các thao tác được hỗ trợ có thể được liên kết với các tín hiệu được hỗ trợ. Các giá trị này được xác định trong CarrierActionUtils.java
:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
Lưu ý: Nếu triển khai ứng dụng độc lập của riêng mình, thì nhà mạng có thể triển khai tính năng hỗ trợ cho các tín hiệu khác ngoài những tín hiệu được đề cập trong phần này. Họ cũng có thể xác định và định cấu hình các hành động của riêng mình.
Mối liên kết mặc định giữa tín hiệu và hành động
Định cấu hình các thao tác mặc định bằng cách làm theo quy trình sau:
- Xác định một khoá cho các tín hiệu được hỗ trợ.
Các ánh xạ mặc định từ tín hiệu đến hành động được xác định trong
CarrierConfigManager.java
. Mỗi tín hiệu được hỗ trợ đều có một khoá:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- Liên kết các thao tác mặc định với các khoá tín hiệu.
Mã nhận dạng hành động mặc định được liên kết với các khoá tín hiệu:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
Khung điện thoại liên kết các thao tác này với các tín hiệu tương ứng.
Ghi đè các thao tác mặc định
Bạn có thể xác định các thao tác tuỳ chỉnh cho những tín hiệu được hỗ trợ trong tệp XML cấu hình nhà mạng bằng cách liên kết mã nhận dạng thao tác với các khoá tín hiệu (được xác định trong CarrierConfigManager.java
). Ví dụ: ánh xạ sau đây sẽ tắt APN có tính phí và cho thấy thông báo trên cổng khi chuyển hướng:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
Khung điện thoại tải các cấu hình này và ghi đè các thao tác mặc định.
Xác nhận kết quả
Không có các bài kiểm tra CTS, CTS Verifier hoặc GTS cho tính năng này.
Sử dụng các bài kiểm thử xác thực thủ công này để xác thực tính năng:
- Xác thực thông báo tín hiệu thiết bị hết số dư của công ty viễn thông.
- Xác minh việc điều tiết chuyển hướng lưu lượng truy cập trong trạng thái mất cân bằng và Wi-Fi ở trạng thái tắt.
- Xác minh rằng lưu lượng truy cập mạng đã giảm và giao diện người dùng thông báo xuất hiện trong trạng thái hết số dư.
- Xác thực chức năng cuộc gọi thoại/VoLTE khi số dư tài khoản không đủ.
- Xác minh rằng tính năng gọi video bị chặn khi tài khoản ở trạng thái không đủ tiền.
- Khi Wi-Fi ở trạng thái bật, hãy xác minh rằng người dùng có thể tiếp tục duyệt web và lưu lượng truy cập duyệt web không bật lưu lượng truy cập mạng khi ở trạng thái hết số dư.
- Xác thực các chức năng Wi-Fi, WFC và Bluetooth trong trạng thái mất cân bằng.
- Tắt Wi-Fi. Xác minh giao diện người dùng thông báo hết số dư và lưu lượng truy cập duyệt web thông thường không được chuyển hướng đến trang web đăng ký của công ty viễn thông. Xác minh rằng khi nhấp vào đường liên kết trong giao diện người dùng thông báo, trình duyệt sẽ chuyển đến trang web đăng ký của công ty viễn thông.
- Xác minh rằng việc bật/tắt chế độ trên máy bay không đặt lại trạng thái điều tiết lưu lượng truy cập.
- Xác minh rằng việc thay thế một SIM đang hoạt động sẽ đặt lại trạng thái lưu lượng truy cập mạng.
- Xác minh rằng việc lắp lại SIM không cân bằng sẽ khởi động lại quá trình chuyển hướng lưu lượng truy cập và nhận được lưu lượng truy cập mạng bị điều tiết trở lại.
- Xác minh rằng việc khởi động lại điện thoại sẽ kích hoạt lại việc chuyển hướng và khôi phục chế độ điều tiết lưu lượng truy cập cũng như giao diện người dùng thông báo.
- Nhấn vào thông báo "captiveportal". Xác minh rằng bạn đã thiết lập kết nối mạng bị hạn chế để cho phép người dùng thêm tín dụng.
- Xác minh rằng việc nạp tiền hoặc kích hoạt lại SIM sẽ giúp khôi phục lưu lượng truy cập mạng di động, đồng thời xoá thông báo về đường liên kết của nhà mạng và thông báo không có số dư.
- Kiểm tra tính hợp lý sau khi khôi phục dịch vụ dữ liệu.
Ứng dụng mặc định cung cấp một số ví dụ về kiểm thử đơn vị và một tập lệnh để chạy các kiểm thử đó (xem tests/runtest.sh
). Khi triển khai một phiên bản hoặc hành vi tuỳ chỉnh, bạn nên phản ánh những điểm tuỳ chỉnh đó vào các kiểm thử đơn vị chuyên dụng.