Kể từ Android 12, Android hỗ trợ Cấu hình quyền sử dụng dịch vụ TS.43, một thông số kỹ thuật GSMA xác định bước xác minh quyền để kích hoạt các dịch vụ bao gồm cả tính năng Truyền thoại qua Wi-Fi (VoWiFi), Truyền thoại qua LTE (VoLTE), Tin nhắn SMS qua IP (SMSoIP), Kích hoạt dịch vụ trên thiết bị (ODSA) của các thiết bị đồng hành eSIM (liên kết với thiết bị yêu cầu) và thông tin về gói dữ liệu.
Để hỗ trợ thông số kỹ thuật này, Android cung cấp tính năng quyền sử dụng dịch vụ IMS cho phép nhà cung cấp dịch vụ thông báo cho thiết bị di động về trạng thái của các dịch vụ mạng Hệ thống con đa phương tiện qua IP (IMS). Tính năng quyền này cho phép thiết bị truy vấn máy chủ quyền của nhà mạng theo định nghĩa của thông số kỹ thuật GSMA TS.43 về trạng thái quyền IMS bằng cách sử dụng quy trình xác thực EAP-AKA mà không yêu cầu người dùng nhập bất kỳ thông tin xác thực nào theo cách thủ công.
Các nhà mạng có máy chủ cấp quyền IMS có thể sử dụng tính năng cấp quyền dịch vụ IMS để cấp dịch vụ. Việc sử dụng tính năng này mang lại các lợi ích sau:
- Giảm chi phí kiểm thử và chứng nhận cho các nhà mạng vì tính năng quyền này có thể được sử dụng trên nhiều sản phẩm và nhà sản xuất thiết bị gốc (OEM).
- Giảm chi phí phát triển cho nhà sản xuất thiết bị thông qua một ứng dụng Android tiêu chuẩn.
- Cho phép nhà sản xuất thiết bị và nhà mạng đóng góp mã cho tính năng này vì tính năng này là nguồn mở.
- Cung cấp dịch vụ quản lý địa chỉ khẩn cấp cho các nhà mạng ở Bắc Mỹ.
Kiến trúc
Hình sau đây mô tả cấu trúc và hành vi của tính năng quyền sử dụng dịch vụ IMS.
Hình 1. Cấu trúc tính năng quyền TS.43
Như minh hoạ trong Hình 1, cấu trúc của tính năng quyền sử dụng dịch vụ IMS bao gồm các thành phần sau:
service_entitlement
Thư viện tĩnh API dịch vụ TS.43: Thư viện này triển khai thông số kỹ thuật TS.43, tương tác với máy chủ quyền của nhà mạng và hiển thị các API dành cho ứng dụng cho từng trường hợp sử dụng TS.43.ImsServiceEntitlement
ứng dụng khách: Ứng dụng này sử dụng API Dịch vụ TS.43. Ứng dụng triển khai các thành phần giao diện người dùng, bao gồm cả thành phần hiển thị web để hiển thị cổng dịch vụ của nhà mạng cho người dùng kích hoạt dịch vụ và tương tác với các thành phần Android khác để quản lý toàn bộ trải nghiệm người dùng.Để biết thêm thông tin về cách định cấu hình Android để hoạt động với máy chủ quyền dựa trên TS.43 của nhà mạng, hãy xem ứng dụng ImsServiceEntitlement.
Các dòng được đánh số trong Hình 1 cho thấy cách các thành phần của tính năng quyền sử dụng dịch vụ IMS giao tiếp với nhau. Phần sau đây mô tả từng bước như có nhãn:
(1) Ứng dụng khách gọi API dịch vụ TS.43 để bắt đầu yêu cầu quyền sử dụng dịch vụ.
(2) API dịch vụ TS.43 gửi một yêu cầu HTTP đến máy chủ quyền của nhà mạng để bắt đầu một thử thách EAP-AKA.
(3) API dịch vụ TS.43 gọi các API điện thoại (ví dụ: getIccAuthentication
) để hoàn tất thách thức-phản hồi EAP-AKA.
(4) Dịch vụ TS.43 nhận được quyền sử dụng dịch vụ hoặc dữ liệu cấu hình từ máy chủ cấp quyền của nhà mạng sau khi xác minh phản hồi EAP-AKA.
(5) Dịch vụ TS.43 trả về quyền sử dụng dịch vụ hoặc dữ liệu cấu hình cho ứng dụng khách.
(6) Ứng dụng khách xử lý dữ liệu và hiển thị cổng dịch vụ của nhà mạng (không bắt buộc) để người dùng hoàn tất việc kích hoạt dịch vụ.
Tích hợp
Phần này mô tả quy trình tích hợp thư viện service_entitlement
và ứng dụng ImsServiceEntitlement
.
Vì không có phần phụ thuộc API Android 12, nên thư viện service_entitlement
và ứng dụng ImsServiceEntitlement
có thể được điều chỉnh cho phiên bản cũ trên các nền tảng Android cũ.
thư viện service_entitlement
Vì thư viện service_entitlement
được liên kết tĩnh vào ImsServiceEntitlement app
, nên bạn không cần thực hiện thêm bước nào để tích hợp thư viện vào ứng dụng ImsServiceEntitlement
.
Bạn có thể tích hợp thư viện service_entitlement
với các ứng dụng của riêng mình cho các trường hợp sử dụng TS.43, chẳng hạn như gói dữ liệu và ODSA. Thư viện này cũng có thể được tích hợp vào một ứng dụng cho các trường hợp sử dụng quyền không phải TS.43 dựa trên giao thức EAP-AKA.
Phần sau đây mô tả các API để dùng cho những trường hợp sử dụng đó:
- Ứng dụng TS.43 sử dụng giao thức HTTP TS.43 được triển khai trong thư viện:
Sử dụng các API trong lớp
ServiceEntitlement
- Ứng dụng không phải TS.43 sử dụng giao thức EAP-AKA được triển khai trong thư viện: Sử dụng các API hiển thị trong lớp
EapAkaHelper
Ứng dụng ImsServiceEntitlement
Theo mặc định, Android sẽ đưa ứng dụng ImsServiceEntitlement
được cài đặt trong phân vùng sản phẩm dưới dạng một ứng dụng đặc quyền. Để định cấu hình ứng dụng, hãy sử dụng các khoá CarrierConfig sau:
Khoá | Giá trị |
---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING |
URL máy chủ cấp quyền của nhà mạng. Bạn phải thêm tiền tố https:// . |
KEY_FCM_SENDER_ID_STRING |
Mã nhận dạng người gửi FCM của nhà mạng. Đừng đặt giá trị này nếu nhà mạng không yêu cầu FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
Đặt thành true nếu nhà mạng yêu cầu giao diện người dùng cổng thông tin web để người dùng đăng ký dịch vụ VoWiFi. Ví dụ: đồng ý với các điều khoản và
điều kiện hoặc nhập địa chỉ khẩn cấp.Đây thường là yêu cầu của các nhà mạng ở Bắc Mỹ. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING |
Đặt thành com.android.imsserviceentitlement/.WfcActivationActivity nếu KEY_SHOW_VOWIFI_WEBVIEW_BOOL là true . |
KEY_IMS_PROVISIONING_BOOL |
Đặt thành true nếu nhà mạng yêu cầu cấp phép mạng cho dịch vụ IMS (VoLTE/VoWiFi/SMSoIP) ở chế độ nền.Một số nhà mạng ở Châu Âu yêu cầu điều này. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL |
Đặt thành true nếu KEY_IMS_PROVISIONING_BOOL là true . |
Lưu lượng truy cập HTTP đến máy chủ quyền và cổng web của nhà mạng sẽ đi qua mạng mặc định, ví dụ: dữ liệu di động hoặc Wi-Fi mặc định.
Đối tác GMS: Ứng dụng quyền TS.43 trong Android 12 hỗ trợ các nhà mạng sau đây, tuân theo thông số kỹ thuật TS.43 phiên bản 5.0:
- Hoa Kỳ: CSpire, US Cellular, Cellcom
- Pháp: Orange
Giao diện người dùng hệ thống bổ sung để cấp phép IMS
Phần này mô tả cách OEM có thể hỗ trợ các phần tử bổ sung trên giao diện người dùng của hệ thống liên quan đến việc cấp phép dịch vụ IMS (ví dụ: khi hiện thông báo khi được cấp phép VoWiFi).
Ứng dụng ImsServiceEntitlement
đặt trạng thái cấp phép VoWiFi vào nền tảng bằng cách sử dụng API hệ thống ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE,
value)
. API này cũng được dùng cho VoLTE (với KEY_VOLTE_PROVISIONING_STATUS
) và SMSoIP (với KEY_SMS_OVER_IP_ENABLED
).
Sau đó, giao diện người dùng của hệ thống có thể đọc trạng thái cấp phép bằng cách sử dụng getProvisioningIntValue
hoặc bằng cách đăng ký lệnh gọi lại để theo dõi thay đổi trạng thái cấp phép thông qua registerProvisioningChangedCallback
.
Ghi đè cấu hình để kiểm thử
Hãy sử dụng các quy trình sau để tạm thời thay đổi hành vi của ứng dụng ImsServiceEntitlement
cho mục đích kiểm thử. Để biết thông tin chi tiết về cách ghi đè cấu hình của nhà mạng, vui lòng xem phần Ghi đè cấu hình của nhà mạng.
Bỏ qua quy trình đăng ký VoWiFi
Để bỏ qua quy trình đăng ký VoWiFi, cho phép bật VoWiFi trực tiếp, ghi đè cấu hình nhà mạng KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
rồi đặt giá trị của cấu hình này thành một chuỗi trống.
Bỏ qua quá trình cấp phép IMS
Để bỏ qua việc cấp phép IMS, cung cấp các dịch vụ IMS và cho phép người dùng bật các dịch vụ đó mà không cần cấp phép mạng, hãy ghi đè cấu hình nhà mạng KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
và đặt giá trị của cấu hình đó thành false
.
Thay đổi URL máy chủ cấp quyền
Để thay đổi URL máy chủ cấp quyền, hãy ghi đè cấu hình nhà mạng KEY_ENTITLEMENT_SERVER_URL_STRING
và đặt giá trị của cấu hình đó thành chuỗi URL dự kiến. Bạn phải thêm tiền tố https://
.
Ghi đè cấu hình của nhà mạng
Từ Android 11, các lệnh ghi đè cấu hình của nhà mạng đã được tích hợp sẵn và dùng được với đặc quyền gốc.
Lệnh sau đây là ví dụ về cách ghi đè khoá cấu hình nhà mạng carrier_volte_provisioning_required_bool
và đặt giá trị của khoá đó thành false
. Bạn có thể chạy lệnh nhiều lần để ghi đè nhiều cấu hình.
adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false
Để xoá tất cả chế độ ghi đè, hãy dùng lệnh sau:
adb shell cmd phone cc clear-values
Để biết thêm thông tin, hãy chạy lệnh sau:
adb shell cmd phone cc