Đăng ký IMS một lần

Android 12 hỗ trợ một mô hình đăng ký duy nhất để cung cấp các tính năng MMTEL và RCS. Mô hình này cho phép các thiết bị quản lý tất cả các tính năng IMS thông qua một quy trình đăng ký IMS duy nhất do ImsService của thiết bị cung cấp và tuân thủ các yêu cầu do một số nhà mạng viễn thông đưa ra. So với mô hình đăng ký kép (nơi nhiều lượt đăng ký IMS được quản lý trên một thiết bị), mô hình đăng ký đơn giúp giảm lưu lượng truy cập trên mạng của nhà mạng và tăng độ tin cậy.

Android 12 hỗ trợ mô hình đăng ký duy nhất này thông qua một cấu trúc có một bộ API cho phép ngăn xếp điện thoại AOSP quản lý cả các tính năng MMTEL do ImsService cung cấp và các tính năng RCS do ứng dụng nhắn tin RCS mà người dùng chọn cung cấp. Để hỗ trợ chế độ đăng ký duy nhất IMS, các nhà sản xuất thiết bị và nhà cung cấp SoC phải triển khai các API này để bật các tính năng RCS trong ứng dụng nhắn tin RCS mà người dùng chọn.

Hình 1 minh hoạ ngăn xếp IMS của thiết bị khi sử dụng mô hình đăng ký đơn IMS. Tất cả các ứng dụng IMS đều sử dụng ImsService mặc định của thiết bị cho các tính năng MMTEL và RCS thông qua một lần đăng ký IMS. Trong đó có việc cung cấp, chuyển tiếp tin nhắn SIP và trao đổi khả năng của người dùng RCS.

Cấu trúc chế độ đăng ký một lần

Hình 1. Cấu trúc mô hình đăng ký duy nhất

Android 11 trở xuống chỉ hỗ trợ mô hình đăng ký kép để cung cấp các tính năng MMTEL và RCS, trong đó MMTEL do ImsService của thiết bị cung cấp và các tính năng RCS được triển khai ở trên cùng, đồng thời quản lý độc lập ngăn xếp IMS và kết nối riêng với mạng của nhà mạng.

Hình 2 minh hoạ cấu trúc của mô hình đăng ký kép. Trong mô hình này, mỗi ứng dụng chịu trách nhiệm kết nối với mạng của nhà mạng và thiết lập một chế độ đăng ký IMS cho các tính năng MMTEL và RCS. ImsService của thiết bị triển khai MMTEL, sử dụng kết nối dữ liệu IMS của thiết bị với mạng của nhà mạng và hoạt động độc lập với các ứng dụng RCS khác.

cấu trúc chế độ đăng ký kép

Hình 2. Cấu trúc mô hình đăng ký kép

IMS single registration APIs

Các thiết bị thuộc những nhà mạng yêu cầu đăng ký một lần IMS phải hỗ trợ các API đăng ký một lần IMS và xác định tính năng Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION. Hình 3 cho thấy các API hỗ trợ quy trình đăng ký một lần IMS.

Các nền tảng API hỗ trợ tính năng đăng ký một lần IMS

Hình 3. Các nền tảng API cấp cao hỗ trợ tính năng đăng ký đơn IMS

Các thiết bị Android hỗ trợ tính năng đăng ký một lần IMS trong ngăn xếp điện thoại AOSP phải hỗ trợ tất cả các API AOSP được mô tả trong bảng sau.

Diện tích API API ứng dụng RCS Vendor IMS API Nội dung mô tả
Cấp phép RCS ProvisioningManager ImsConfigImplBase Cho phép một OEM hoặc nhà mạng cung cấp một ứng dụng để cập nhật trạng thái cung cấp RCS nếu nhà mạng sử dụng một cơ chế đặc quyền của nhà mạng độc quyền. ImsService cũng phải hỗ trợ AutoConfigurationServer (ACS) tiêu chuẩn để cung cấp cho những nhà mạng không sử dụng cơ chế độc quyền.
Chuyển tiếp thông báo SIP SipDelegateManager SipTransportImplBase Cho phép một ứng dụng RCS trước tiên liên kết các thẻ tính năng RCS cụ thể với thiết bị ImsService, sau đó gửi và nhận các tin nhắn SIP và thông tin cập nhật đăng ký IMS được liên kết với các thẻ tính năng RCS đó.
Thông báo về sóng mang chuyên dụng ConnectivityManager DataCallResponse Cho phép ứng dụng nghe các thông báo QoS trên một ổ cắm được liên kết với một cổng cục bộ cụ thể.
Xác thực GBA bootstrapAuthenticationRequest GbaService Cho phép một ứng dụng RCS xác thực với mạng và các khoá truy cập được dùng cho các tính năng RCS như chuyển tệp.
Trao đổi thông tin về các chức năng của người dùng RCS ImsRcsManager RcsCapabilityExchangeImplBase Cung cấp cho AOSP khả năng gửi các tính năng MMTEL và RCS đến ImsService của nhà cung cấp để các tính năng này có thể được xuất bản trong một thực thể cho mạng để trao đổi khả năng của người dùng RCS. Ngoài ra, cho phép các ứng dụng khác quan tâm đến các tính năng RCS của một hoặc nhiều người liên hệ truy vấn mạng để biết các tính năng RCS của người liên hệ.

Tính bảo mật và quyền truy cập

Android 12 giới thiệu các quyền sau đây để đảm bảo quyền truy cập an toàn vào mạng của nhà mạng và dữ liệu của người dùng:

Ứng dụng nhắn tin có các tính năng RCS phải xác định quyền android.permission.PERFORM_IMS_SINGLE_REGISTRATION. Để được cấp quyền này, bạn phải đáp ứng các điều kiện sau:

  • Ứng dụng phải được cài đặt dưới dạng một ứng dụng có đặc quyền, tức là ứng dụng đó được cài đặt sẵn trên thiết bị và được phép truy cập vào các quyền có đặc quyền
  • Ứng dụng phải được đặt làm vai trò SMS mặc định của người dùng bằng cách sử dụng RoleManager

Nếu không đáp ứng cả hai điều kiện này, ứng dụng sẽ bị từ chối quyền truy cập vào quyền android.permission.PERFORM_IMS_SINGLE_REGISTRATION. Điều này có nghĩa là các ứng dụng bên thứ ba không được phép truy cập vào API đăng ký một lần RCS vì các API này yêu cầu chứng nhận của nhà mạng trên thiết bị.

Quyền android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE khi được cấp cho một ứng dụng cũng có quyền READ_CONTACTS sẽ cho phép ứng dụng yêu cầu các chức năng RCS của số điện thoại bằng cách dùng RcsUceAdapter. Để được cấp quyền này, bạn phải đáp ứng các điều kiện sau:

  • Ứng dụng phải được cài đặt dưới dạng một ứng dụng có đặc quyền, tức là ứng dụng đó được cài đặt sẵn trên thiết bị và được phép truy cập vào các quyền có đặc quyền.
  • Ứng dụng phải được xác định là một trong những vai trò RoleManager sau đây:

    • Ứng dụng nhắn tin mặc định: Do người dùng đặt.
    • Ứng dụng gọi điện mặc định: Do người dùng thiết lập.
    • Ứng dụng danh bạ mặc định: Một vai trò được giới thiệu trong Android 12, cho phép OEM xác định tên gói thông qua giá trị lớp phủ thiết bị config_systemContacts. Giá trị này phải tương ứng với ứng dụng danh bạ của thiết bị. Sau đó, ứng dụng đó sẽ được cấp vai trò danh bạ.

Để truy cập vào APN IMS bằng ConnectivityManager để thiết lập và quản lý lưu lượng dữ liệu, các ứng dụng cũng phải yêu cầu cấp quyền android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS.

Ví dụ và nguồn

Android cung cấp một ứng dụng trong AOSP để triển khai ứng dụng nhắn tin kiểm thử với tính năng hỗ trợ nhắn tin RCS cơ bản cho mục đích kiểm thử và phát triển. Bạn có thể tìm thấy ứng dụng này tại testapps/TestRcsApp. Khi được cài đặt trên một thiết bị, ứng dụng có thể được đặt làm ứng dụng nhắn tin mặc định của người dùng và sẽ có các quyền cần thiết để truy cập vào API đăng ký một lần IMS.

Android cũng cung cấp một mẫu triển khai ImsService cho RCS. Mã nguồn nằm ở /testapps/ImsTestService.

Triển khai

Để biết thêm thông tin chi tiết về cách triển khai, hãy tải Tính năng đăng ký một lần IMS trong Android xuống.

Xác nhận kết quả

Để xác thực việc triển khai tính năng đăng ký một lần IMS, hãy làm như sau:

  • Đảm bảo bộ kiểm thử CTS CtsTelephonyTestCases đạt.
  • Cài đặt và chạy TestRcsApp để chạy các trường hợp kiểm thử đăng ký đơn giản cơ bản trong quá trình tích hợp.
  • Vượt qua quy trình chứng nhận nhà mạng cho các trường hợp kiểm thử đăng ký một lần IMS.