Android 12 wprowadza obsługę pojedynczego modelu rejestracji do udostępniania funkcji MMTEL i RCS. Ten model umożliwia zarządzanie wszystkimi funkcjami IMS za pomocą jednej rejestracji IMS zapewnianej przez usługę ImsService urządzenia i spełnianie wymagań wprowadzonych przez niektórych operatorów telekomunikacyjnych. W porównaniu z modelem podwójnej rejestracji, w którym na jednym urządzeniu zarządza się wieloma rejestracjami IMS, pojedyncza rejestracja zmniejsza ruch w sieci operatora i zwiększa niezawodność.
Android 12 obsługuje ten model pojedynczej rejestracji za pomocą architektury z zestawem interfejsów API, które umożliwiają stosowi telefonicznemu AOSP zarządzanie zarówno funkcjami MMTEL udostępnianymi przez ImsService
, jak i funkcjami RCS udostępnianymi przez wybraną przez użytkownika aplikację do obsługi wiadomości RCS. Aby obsługiwać pojedynczą rejestrację IMS, producenci urządzeń i dostawcy układów SoC muszą wdrożyć te interfejsy API, aby włączyć funkcje RCS w wybranej przez użytkownika aplikacji do obsługi wiadomości RCS.
Rysunek 1 przedstawia stos IMS urządzenia podczas korzystania z modelu pojedynczej rejestracji IMS. Wszystkie aplikacje IMS korzystają z domyślnej usługi ImsService urządzenia w przypadku funkcji MMTEL i RCS w ramach jednej rejestracji IMS. Obejmuje to udostępnianie, przekazywanie wiadomości SIP i wymianę informacji o możliwościach użytkownika RCS.
Rysunek 1. Architektura modelu pojedynczej rejestracji
Android 11 i starsze wersje obsługują tylko model podwójnej rejestracji, który zapewnia funkcje MMTEL i RCS. MMTEL jest udostępniany przez ImsService urządzenia, a funkcje RCS są implementowane na wyższym poziomie i niezależnie zarządzają własnym stosem IMS oraz połączeniem z siecią operatora.
Rysunek 2 przedstawia architekturę modelu podwójnej rejestracji. W tym modelu każda aplikacja jest odpowiedzialna za połączenie z siecią operatora i zarejestrowanie IMS na potrzeby funkcji MMTEL i RCS. Usługa ImsService urządzenia implementuje MMTEL, korzysta z połączenia danych IMS urządzenia z siecią operatora i działa niezależnie od innych aplikacji RCS.
Rysunek 2. Architektura modelu podwójnej rejestracji
Interfejsy API pojedynczej rejestracji IMS
Urządzenia, które działają w sieciach operatorów wymagających pojedynczej rejestracji IMS, muszą obsługiwać interfejsy API pojedynczej rejestracji IMS i definiować funkcję Androida PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
.
Na rysunku 3 przedstawiono interfejsy API, które obsługują pojedynczą rejestrację w IMS.
Rysunek 3. Interfejsy API wysokiego poziomu obsługujące pojedynczą rejestrację IMS
Urządzenia z Androidem, które obsługują pojedynczą rejestrację IMS w ramach stosu telefonicznego AOSP, muszą obsługiwać wszystkie interfejsy API AOSP opisane w tabeli poniżej.
Obszar interfejsu API | Interfejsy API aplikacji RCS | Interfejsy API systemu IMS dostawcy | Opis |
---|---|---|---|
Udostępnianie RCS | ProvisioningManager | ImsConfigImplBase | Umożliwia producentowi OEM lub operatorowi udostępnienie aplikacji do aktualizowania stanu udostępniania RCS, jeśli operator korzysta z własnego mechanizmu uprawnień. Usługa ImsService musi też obsługiwać standardowy serwer automatycznej konfiguracji (ACS) do udostępniania usług operatorom, którzy nie korzystają z mechanizmu własnościowego. |
Przekazywanie wiadomości SIP | SipDelegateManager | SipTransportImplBase | Umożliwia aplikacji RCS najpierw powiązanie określonych tagów funkcji RCS z urządzeniemImsService , a następnie wysyłanie i odbieranie wiadomości SIP oraz aktualizacji rejestracji IMS powiązanych z tymi tagami funkcji RCS. |
Powiadomienia o dedykowanym nośniku | ConnectivityManager | DataCallResponse | Umożliwia aplikacji nasłuchiwanie powiadomień o jakości usługi na gnieździe powiązanym z określonym portem lokalnym. |
Uwierzytelnianie GBA | bootstrapAuthenticationRequest | GbaService | Umożliwia aplikacji RCS uwierzytelnianie w sieci i dostęp do kluczy używanych w funkcjach RCS, takich jak przesyłanie plików. |
Wymiana informacji o możliwościach użytkownika RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | Umożliwia AOSP wysyłanie funkcji MMTEL i RCS do usługi ImsService dostawcy, aby można było opublikować je w ramach jednego podmiotu w sieci na potrzeby wymiany funkcji użytkownika RCS. Umożliwia też innym aplikacjom zainteresowanym funkcjami RCS co najmniej 1 kontaktu wysyłanie do sieci zapytań o te funkcje. |
Zabezpieczenia i uprawnienia
Android 12 wprowadza te uprawnienia, aby zapewnić bezpieczny dostęp do sieci operatora i danych użytkownika:
android.permission.PERFORM_IMS_SINGLE_REGISTRATION
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
Uprawnienie android.permission.PERFORM_IMS_SINGLE_REGISTRATION
musi być zdefiniowane przez aplikację do obsługi wiadomości z funkcjami RCS. Aby to uprawnienie zostało przyznane, muszą być spełnione te warunki:
- Aplikacja musi być zainstalowana jako aplikacja z uprawnieniami, co oznacza, że jest preinstalowana na urządzeniu i ma dostęp do uprawnień specjalnych.
- Aplikacja musi być ustawiona jako domyślna aplikacja do SMS-ów użytkownika za pomocą funkcji
RoleManager
Jeśli oba te warunki nie zostaną spełnione, aplikacja nie otrzyma dostępu do uprawnienia android.permission.PERFORM_IMS_SINGLE_REGISTRATION
. Oznacza to, że aplikacje innych firm nie mogą uzyskiwać dostępu do interfejsów API pojedynczej rejestracji RCS, ponieważ wymagają one certyfikacji operatora na urządzeniu.
Uprawnienie
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
przyznane aplikacji, która ma też uprawnienie READ_CONTACTS, umożliwia jej żądanie informacji o możliwościach RCS numerów telefonów za pomocą funkcji
RcsUceAdapter
.
Aby to uprawnienie zostało przyznane, muszą być spełnione te warunki:
- Aplikacja musi być zainstalowana jako aplikacja z uprawnieniami, co oznacza, że jest preinstalowana na urządzeniu i ma dostęp do uprawnień specjalnych.
Aplikacja musi mieć jedną z tych ról:
RoleManager
- Domyślna aplikacja do obsługi wiadomości: ustawiana przez użytkownika.
- Domyślna aplikacja telefoniczna: ustawiana przez użytkownika.
- Domyślna aplikacja do obsługi kontaktów: rola wprowadzona w Androidzie 12, która umożliwia producentowi OEM zdefiniowanie nazwy pakietu za pomocą wartości nakładki urządzenia
config_systemContacts
, która musi odpowiadać aplikacji do obsługi kontaktów na urządzeniu. Ta aplikacja otrzymuje następnie rolę aplikacji do obsługi kontaktów.
Aby uzyskać dostęp do APN IMS za pomocą ConnectivityManager
w celu konfigurowania ruchu danych i zarządzania nim, aplikacje muszą też poprosić o uprawnienie android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
Przykłady i źródło
Android udostępnia w AOSP aplikację, która implementuje testową aplikację do obsługi wiadomości z podstawową obsługą wiadomości RCS na potrzeby testowania i programowania. Aplikację znajdziesz pod adresem testapps/TestRcsApp
.
Po zainstalowaniu aplikacji na urządzeniu można ją ustawić jako domyślną aplikację do obsługi wiadomości użytkownika. Będzie ona mieć uprawnienia wymagane do uzyskania dostępu do interfejsów API pojedynczej rejestracji IMS.
Android udostępnia też przykładową implementację ImsService dla RCS. Kod źródłowy znajduje się pod adresem /testapps/ImsTestService
.
Implementacja
Więcej informacji o implementacji znajdziesz w artykule IMS Single Registration in Android (w języku angielskim).
Weryfikacja
Aby sprawdzić poprawność implementacji pojedynczej rejestracji IMS:
- Upewnij się, że pakiet testów CTS CtsTelephonyTestCases przechodzi testy.
- Zainstaluj i uruchom aplikację TestRcsApp, aby podczas integracji uruchamiać podstawowe przypadki testowe pojedynczej rejestracji.
- Zaliczenie testów certyfikacji operatora w przypadku testów pojedynczej rejestracji IMS.