Uprawnienia do usługi IMS

Od Androida 12 system ten obsługuje konfigurację uprawnień do usług TS.43, czyli specyfikację GSMA, która określa krok weryfikacji uprawnień do aktywacji usług, w tym połączeń głosowych przez Wi-Fi (VoWiFi), połączeń głosowych przez LTE (VoLTE), SMS-ów przez IP (SMSoIP), aktywacji usług na urządzeniu (ODSA) w przypadku urządzeń towarzyszących eSIM (powiązanych z urządzeniem wysyłającym żądanie) oraz informacji o pakiecie danych.

Aby obsługiwać tę specyfikację, Android udostępnia funkcję uprawnień do usług IMS, która umożliwia dostawcy usług informowanie urządzeń mobilnych o stanie usług sieci IMS (IP Multimedia Subsystem). Ta funkcja uprawnień umożliwia urządzeniu wysyłanie zapytań do serwera uprawnień operatora zgodnie ze specyfikacją GSMA TS.43 o stan uprawnień IMS za pomocą uwierzytelniania EAP-AKA bez konieczności ręcznego wpisywania przez użytkowników danych logowania.

Operatorzy z serwerami uprawnień IMS mogą używać funkcji uprawnień do usług IMS do udostępniania usług. Wdrożenie tej funkcji zapewnia te korzyści:

  • Obniża koszty testowania i certyfikacji dla operatorów, ponieważ ta funkcja uprawnień może być używana w przypadku wielu produktów i producentów OEM.
  • Zmniejsza koszty rozwoju dla producentów urządzeń dzięki standardowej aplikacji na Androida.
  • Umożliwia producentom urządzeń i operatorom komórkowym współtworzenie kodu tej funkcji, ponieważ jest ona dostępna na licencji open source.
  • Umożliwia zarządzanie adresami alarmowymi w przypadku operatorów z Ameryki Północnej.

Architektura

Na poniższym rysunku przedstawiono architekturę i działanie funkcji uprawnień do usługi IMS.

Funkcja uprawnień TS.43

Rysunek 1. Architektura funkcji uprawnień TS.43

Jak pokazano na rysunku 1, architektura funkcji uprawnień do usługi IMS obejmuje te komponenty:

  • service_entitlement Statyczna biblioteka interfejsu TS.43 Service API: Ta biblioteka implementuje specyfikację TS.43, wchodzi w interakcję z serwerem uprawnień operatora i udostępnia interfejsy API dla aplikacji w każdym przypadku użycia TS.43.
  • ImsServiceEntitlement aplikacja kliencka: ta aplikacja korzysta z interfejsu API usługi TS.43. Aplikacja implementuje elementy interfejsu, w tym widoki internetowe, które służą do renderowania portalu usług operatora, aby użytkownicy mogli aktywować usługi. Współpracuje też z innymi komponentami Androida, aby kompleksowo zarządzać wygodą użytkowników.

    Więcej informacji o konfigurowaniu Androida do współpracy z serwerem uprawnień operatora opartym na TS.43 znajdziesz w aplikacji ImsServiceEntitlement.

Ponumerowane linie na rysunku 1 pokazują, jak komponenty funkcji uprawnień usługi IMS komunikują się ze sobą. Poniżej znajdziesz opis poszczególnych kroków:

(1) Aplikacja kliencka wywołuje interfejs API usługi TS.43, aby zainicjować żądanie uprawnień do usługi.

(2) Interfejs API usługi TS.43 wysyła żądanie HTTP do serwera uprawnień operatora, aby zainicjować wyzwanie EAP-AKA.

(3) Interfejs API usługi TS.43 wywołuje interfejsy API telefonii (np. getIccAuthentication), aby ukończyć proces weryfikacji EAP-AKA.

(4) Usługa TS.43 otrzymuje dane dotyczące uprawnień do usługi lub konfiguracji z serwera uprawnień operatora po zweryfikowaniu odpowiedzi EAP-AKA.

(5) Usługa TS.43 zwraca do aplikacji klienta dane dotyczące uprawnień do usługi lub konfiguracji.

(6) Aplikacja klienta przetwarza dane i opcjonalnie renderuje portal usługowy operatora, aby użytkownik mógł dokończyć aktywację usługi.

Integracja

W tej sekcji opisujemy proces integrowania biblioteki service_entitlement z aplikacją ImsServiceEntitlement.

Biblioteka service_entitlement i aplikacja ImsServiceEntitlement nie są zależne od interfejsu API Androida 12, więc można je przenieść do starszych wersji Androida.

biblioteka service_entitlement

Ponieważ service_entitlement jest statycznie połączona z ImsServiceEntitlement app, nie są wymagane żadne dodatkowe czynności, aby zintegrować bibliotekę z aplikacją ImsServiceEntitlement.

Bibliotekę service_entitlement można zintegrować z własnymi aplikacjami na potrzeby przypadków użycia TS.43, takich jak pakiet danych i ODSA. Bibliotekę można też zintegrować z aplikacją w przypadku użycia uprawnień innych niż TS.43 na podstawie protokołu EAP-AKA.

Poniżej opisujemy interfejsy API, których należy używać w takich przypadkach:

  • Aplikacja TS.43 korzystająca z protokołu HTTP TS.43 zaimplementowanego w bibliotece: Używaj interfejsów API w klasie ServiceEntitlement
  • Aplikacja niezgodna ze specyfikacją TS.43 korzystająca z protokołu EAP-AKA zaimplementowanego w bibliotece: użyj interfejsów API udostępnionych w klasie EapAkaHelper.

Aplikacja ImsServiceEntitlement

Domyślnie Android zawiera aplikację ImsServiceEntitlement zainstalowaną w partycji produktu jako aplikację uprzywilejowaną. Aby skonfigurować aplikację, użyj tych kluczy CarrierConfig:

Klucz Wartość
KEY_ENTITLEMENT_SERVER_URL_STRING Adres URL serwera uprawnień operatora. Musi zawierać prefiks https://.
KEY_FCM_SENDER_ID_STRING Identyfikator nadawcy FCM operatora.

Nie ustawiaj tej wartości, jeśli przewoźnik nie wymaga FCM.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Ustaw wartość true, jeśli operator wymaga, aby użytkownicy rejestrowali się w usłudze VoWiFi w interfejsie portalu internetowego. Na przykład zaakceptowanie warunków lub wpisanie adresu alarmowego.

Jest to zwykle wymagane przez operatorów w Ameryce Północnej.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Ustaw na com.android.imsserviceentitlement/.WfcActivationActivity, jeśli KEY_SHOW_VOWIFI_WEBVIEW_BOOL ma wartość true.
KEY_IMS_PROVISIONING_BOOL Ustaw wartość true, jeśli operator wymaga w tle udostępniania w sieci usług IMS (VoLTE/VoWiFi/SMSoIP).

Jest to wymagane przez niektórych przewoźników w Europie.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Ustaw na true, jeśli KEY_IMS_PROVISIONING_BOOL ma wartość true.

Ruch HTTP do serwera uprawnień i portalu internetowego operatora odbywa się w sieci domyślnej, np. domyślnej sieci komórkowej lub Wi-Fi.

Partnerzy GMS: następujący operatorzy są obsługiwani przez aplikację uprawniającą TS.43 w Androidzie 12 zgodnie ze specyfikacją TS.43 w wersji 5.0:

  • USA: CSpire, US Cellular, Cellcom
  • Francja: Orange

Dodatkowy interfejs systemu do obsługi administracyjnej IMS

W tej sekcji opisujemy, jak producenci OEM mogą obsługiwać dodatkowe elementy interfejsu systemu związane z udostępnianiem usług IMS (np. wyświetlanie powiadomienia o udostępnieniu usługi VoWiFi).

Aplikacja ImsServiceEntitlement ustawia stan udostępniania VoWiFi na platformie za pomocą interfejsu systemowego ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value). Ten interfejs API jest też używany w przypadku VoLTE (z KEY_VOLTE_PROVISIONING_STATUS) i SMSoIP (z KEY_SMS_OVER_IP_ENABLED).

Interfejs systemu może odczytać stan udostępniania za pomocą funkcji getProvisioningIntValue lub rejestrując wywołanie zwrotne w celu monitorowania zmiany stanu udostępniania za pomocą funkcji registerProvisioningChangedCallback.

Zastępowanie konfiguracji na potrzeby testów

Aby tymczasowo zmienić działanie aplikacji na potrzeby testów, wykonaj te czynności.ImsServiceEntitlement Szczegółowe informacje o zastępowaniu konfiguracji operatora znajdziesz w artykule Zastępowanie konfiguracji operatora.

Pomiń proces rejestracji w VoWiFi

Aby pominąć proces rejestracji w VoWiFi i umożliwić bezpośrednie włączenie tej usługi, zastąp konfigurację operatora KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING i ustaw jej wartość na pusty ciąg znaków.

Pomiń obsługę administracyjną IMS

Aby pominąć udostępnianie IMS, udostępnić usługi IMS i umożliwić użytkownikom włączanie takich usług bez udostępniania sieci, zastąp konfigurację operatora KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL i ustaw jej wartość na false.

Zmiana adresu URL serwera uprawnień

Aby zmienić adres URL serwera uprawnień, zastąp konfigurację operatora KEY_ENTITLEMENT_SERVER_URL_STRING i ustaw jej wartość na oczekiwany ciąg znaków adresu URL. Musisz dodać prefiks https://.

Zastępowanie konfiguracji operatora

Od Androida 11 polecenia zastępowania konfiguracji operatora są wbudowane i dostępne z uprawnieniami roota.

Poniższe polecenie pokazuje, jak zastąpić klucz konfiguracji operatora carrier_volte_provisioning_required_bool i ustawić jego wartość na false. Możesz uruchomić to polecenie kilka razy, aby zastąpić wiele konfiguracji.

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

Aby usunąć wszystkie zastąpienia, użyj tego polecenia:

adb shell cmd phone cc clear-values

Aby uzyskać więcej informacji, uruchom to polecenie:

adb shell cmd phone cc