Uprawnienie do usługi IMS

Począwszy od Androida 12 Android obejmuje obsługę TS.43 konfiguracji uprawnień do usługi. Jest to specyfikacja GSMA określająca etap weryfikacji uprawnień w przypadku aktywacji usług, w tym Voice-over-Wi-Fi (VoWi-Fi), Voice-over-LTE (VoLTE), SMS-ów przez IP (SMSoIP), aktywacji usług na urządzeniu (ODSA) i powiązanych z abonamentem danych eSIM urządzeń obsługujących dane eSIM.

Aby obsługiwać tę specyfikację, Android udostępnia funkcję upoważnień usługi IMS, która umożliwia dostawcy usług informowanie urządzeń mobilnych o stanie usług sieciowych podsystemu IP Multimedia Subsystem (IMS). Ta funkcja uprawnień pozwala urządzeniu wysyłać zapytania do serwera uprawnień operatora zgodnie ze specyfikacją GSMA TS.43 dotyczącą stanu upoważnienia IMS z wykorzystaniem uwierzytelniania EAP-AKA bez konieczności ręcznego wpisywania danych logowania przez użytkowników.

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

  • Obniża koszty testowania i certyfikacji dla operatorów, ponieważ z tej funkcji uprawnień można korzystać w wielu usługach i producentach OEM.
  • Zmniejszają nakład pracy producentów urządzeń za pomocą standardowej aplikacji na Androida.
  • Umożliwia producentom urządzeń i operatorom tworzenie kodu dla tej funkcji, ponieważ jest to funkcja open source.
  • Zapewnia zarządzanie adresami alarmowymi dla przewoźników w Ameryce Północnej.

Architektura

Ilustracja poniżej opisuje architekturę i działanie funkcji uprawnień usługi IMS.

Funkcja TS.43 dotycząca uprawnień

Rysunek 1. Architektura funkcji uprawnień TS.43

Jak widać na Rysunku 1, architektura funkcji upoważnienia usługi IMS obejmuje te komponenty:

  • service_entitlement Biblioteka statyczna interfejsu API usługi TS.43: Ta biblioteka implementuje specyfikację TS.43, współpracuje z serwerem uprawnień operatora i udostępnia interfejsy API aplikacji w każdym przypadku użycia TS.43.
  • Aplikacja kliencka ImsServiceEntitlement: ta aplikacja używa interfejsu Service API TS.43. Aplikacja implementuje elementy interfejsu, w tym komponenty WebView, które służą do renderowania portalu usług operatora, umożliwiając użytkownikom aktywowanie usług i interakcję z innymi komponentami Androida w celu kompleksowego zarządzania wrażeniami użytkownika.

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

Linie ponumerowane na rys. 1 pokazują, jak komponenty funkcji uprawnień do usługi IMS komunikują się ze sobą. Poniżej opisano każdy z nich:

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

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

(3) Interfejs API usługi TS.43 wywołuje interfejsy telefoniczne API (na przykład getIccAuthentication), aby wykonać test odpowiedzi EAP-AKA.

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

(5) Usługa TS.43 zwraca do aplikacji klienckiej dane o uprawnieniach lub dane konfiguracji usługi.

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

Integracja

W tej sekcji opisano proces integracji biblioteki service_entitlement z aplikacją ImsServiceEntitlement.

Ponieważ nie ma zależności od interfejsów API Androida 12, bibliotekę service_entitlement i aplikację ImsServiceEntitlement można przenieść na starsze platformy Androida.

biblioteka service_entitlement

Biblioteka service_entitlement jest statycznie połączona z aplikacją ImsServiceEntitlement app, więc nie musisz wykonywać żadnych dodatkowych czynności, aby zintegrować ją z aplikacją ImsServiceEntitlement.

Bibliotekę service_entitlement można zintegrować z własnymi aplikacjami na potrzeby przypadków użycia TS.43, takich jak abonament danych czy ODSA. Można ją też zintegrować z aplikacją na potrzeby przypadków 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żywanie interfejsów API w klasie ServiceEntitlement
  • Aplikacja inna niż 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 uwzględnia aplikację ImsServiceEntitlement zainstalowaną na partycji produktu jako aplikację z podwyższonymi uprawnieniami. Aby skonfigurować aplikację, użyj tych kluczy CarrierConfig:

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

Nie ustawiaj tej wartości, jeśli operator nie wymaga FCM.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Ustaw jako true, jeśli operator wymaga interfejsu internetowego, aby użytkownicy mogli rejestrować się w usłudze VoWiFi. Może to być na przykład zgoda na warunki korzystania z usługi lub podanie adresu alarmowego.

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

Jest to wymagane przez niektórych europejskich operatorów.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Ustaw jako true, jeśli KEY_IMS_PROVISIONING_BOOL ma wartość true.

Ruch HTTP do serwera uprawnień i portalu internetowego operatora przechodzi przez sieć domyślną, na przykład domyślną mobilną transmisję danych lub Wi-Fi.

Partnerzy GMS: aplikacja do obsługi uprawnień TS.43 jest obsługiwana w Androidzie 12 zgodnie ze specyfikacją TS.43 w wersji 5.0 tych operatorów:

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

Dodatkowy interfejs systemu do obsługi administracyjnej IMS

W tej sekcji opisano, jak producenci OEM mogą obsługiwać dodatkowe elementy interfejsu systemu związane z udostępnianiem usług IMS (na przykład podczas wyświetlania powiadomienia o udostępnieniu VoWiFi).

Aplikacja ImsServiceEntitlement ustawia stan obsługi administracyjnej VoWiFi na platformie za pomocą systemowego interfejsu API ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value). Ten interfejs API jest też używany na potrzeby VoLTE (z KEY_VOLTE_PROVISIONING_STATUS) i SMSoIP (w KEY_SMS_OVER_IP_ENABLED).

Interfejs systemu może następnie odczytywać stan obsługi administracyjnej za pomocą funkcji getProvisioningIntValue lub przez zarejestrowanie wywołania zwrotnego w celu monitorowania zmiany stanu obsługi administracyjnej w registerProvisioningChangedCallback.

Zastępowanie konfiguracji na potrzeby testowania

Użyj poniższych procedur, aby tymczasowo zmienić działanie aplikacji ImsServiceEntitlement na potrzeby testowania. Szczegółowe informacje o zastępowaniu konfiguracji operatorów znajdziesz w artykule Zastępowanie konfiguracji operatorów.

Pomijam proces rejestracji VoWiFi

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

Pomijam udostępnianie IMS

Aby pominąć udostępnianie usług IMS i umożliwić użytkownikom włączanie takich usług bez obsługi administracyjnej 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 jego wartość na oczekiwany ciąg adresu URL. Musisz uwzględnić prefiks https://.

Zastępowanie konfiguracji operatorów

Od Androida 11 polecenia zastępowania konfiguracji operatora są wbudowane i dostępne z uprawnieniami użytkownika root.

Poniżej znajdziesz przykład zastępowania klucza konfiguracji operatora carrier_volte_provisioning_required_bool i ustawienia jego wartości na false. Możesz uruchomić to polecenie wiele razy, aby zastąpić wiele konfiguracji.

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

Aby wyczyścić 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