Quyền đối với dịch vụ IMS

Trên Android 12, Android hỗ trợ cả Cấu hình quyền đối với dịch vụ TS.43. Thông số kỹ thuật GSMA xác định bước xác minh quyền khi kích hoạt các dịch vụ, trong đó có tính năng Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS qua IP (SMSoIP), Kích hoạt dịch vụ trên thiết bị (ODSA) của thông tin về gói eSIM (liên kết với thiết bị yêu cầu) và dữ liệu về gói eSIM.

Để hỗ trợ thông số kỹ thuật này, Android cung cấp tính năng cấp 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 của Hệ thống mạng đa phương tiện 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 quy cách GSMA TS.43 về trạng thái quyền IMS bằng cách sử dụng phương thức xác thực EAP-AKA mà không yêu cầu người dùng nhập thủ công bất kỳ thông tin xác thực nào.

Những 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 đối với dịch vụ IMS để cấp phép dịch vụ. Việc sử dụng tính năng này mang lại những lợi ích sau:

  • Giảm chi phí kiểm thử và chứng nhận cho nhà mạng vì tính năng quyền này có thể dùng trên nhiều sản phẩm và 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 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ỹ.

Cấu trúc

Hình sau đây mô tả cấu trúc và hành vi của tính năng cấp quyền sử dụng dịch vụ IMS.

Tính năng cấp quyền TS.43

Hình 1. Cấu trúc tính năng của 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.
  • Ứng dụng khách ImsServiceEntitlement: Ứng dụng này dùng API Dịch vụ TS.43. Ứng dụng này triển khai các thành phần giao diện người dùng, bao gồm cả webview để hiển thị cổng dịch vụ của nhà mạng để 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 nhằm quản lý trải nghiệm người dùng một cách toàn diện.

    Để biết thêm thông tin về cách định cấu hình Android nhằm hoạt động với máy chủ quyền dựa trên TS.43 của nhà mạng, hãy xem phần Ứ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 một yêu cầu về 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ủ cấp quyền của nhà mạng để bắt đầu thử thách EAP-AKA.

(3) API dịch vụ TS.43 gọi API điện thoại (ví dụ: getIccAuthentication) để hoàn tất phản hồi thử thách EAP-AKA.

(4) Dịch vụ TS.43 nhận dữ liệu về quyền sử dụng dịch vụ hoặc dữ liệu cấu hình từ máy chủ 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.

(6) Ứng dụng khách xử lý dữ liệu và tuỳ ý hiển thị cổng dịch vụ của nhà mạng để 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.

Do 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ũ đối với 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ới 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. Bạn cũng có thể tích hợp thư viện này 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 dùng giao thức HTTP TS.43 được triển khai trong thư viện: Sử dụng 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: Dùng các API hiển thị trong lớp EapAkaHelper

Ứng dụng ImsServiceEntitlement

Theo mặc định, Android bao gồm ứ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 bao gồ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ủa 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_BOOLtrue.
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.

Đây là yêu cầu của một số nhà mạng ở Châu Âu.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Đặt thành true nếu KEY_IMS_PROVISIONING_BOOLtrue.

Lưu lượng truy cập HTTP tới máy chủ quyền và cổng web của nhà mạng sẽ chuyển qua mạng mặc định (ví dụ: dữ liệu di động hoặc Wi-Fi mặc định).

Đối tác GMS: Các nhà mạng sau đây được ứng dụng cấp quyền TS.43 hỗ trợ trong Android 12, theo quy cách TS.43 v5.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 thành nền tảng bằ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 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ý một lệnh gọi lại để theo dõi sự 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 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 những dịch vụ đó mà không cần cấp phép mạng, hãy ghi đè cấu hình của nhà mạng KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL rồi đặt giá trị của cấu hình này thành false.

Thay đổi URL máy chủ quyền

Để thay đổi URL máy chủ quyền, hãy ghi đè cấu hình của nhà mạng KEY_ENTITLEMENT_SERVER_URL_STRING và đặt giá trị của cấu hình này thành chuỗi URL dự kiến. Bạn phải bao gồ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 của 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 này 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ả cá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