Upoważnienie do korzystania z usługi IMS

Od Androida 12 Android obsługuje konfigurację uprawnień do usług TS.43, czyli specyfikację GSMA definiującą krok weryfikacji uprawnień do aktywacji usług, w tym Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), aktywacji usług na urządzeniu (ODSA) na urządzeniach towarzyszących eSIM (powiązanych z urządzeniem wysyłającym żądanie) oraz informacji o planie danych.

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 multimedialnego IP (IMS). Ta funkcja uprawnień umożliwia urządzeniu wysyłanie zapytań do serwera uprawnień operatora zgodnie ze specyfikacją GSMA TS.43 dotyczącą stanu 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ń usług IMS do obsługi usługi. Wdrożenie tej funkcji przynosi następujące 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 OEM-ów.
  • Zmniejszają nakład pracy producentów urządzeń za pomocą standardowej aplikacji na Androida.
  • Umożliwia producentom urządzeń i operatorom dodawanie kodu dla tej funkcji, ponieważ jest ona dostępna jako oprogramowanie open source.
  • Zapewnia zarządzanie adresem alarmowym w przypadku operatorów w Ameryce Północnej.

Architektura

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

Funkcja uprawnień TS.43

Rysunek 1. Architektura funkcji uprawnień TS.43

Jak widać na rysunku 1, architektura funkcji uprawnień do 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 wyświetla interfejsy API dla aplikacji w przypadku każdego zastosowania TS.43.
  • ImsServiceEntitlementaplikacja kliencka: ta aplikacja korzysta z interfejsu TS.43 Service API. Aplikacja implementuje elementy UI, w tym widoki internetowe do renderowania portalu usług operatora, aby użytkownicy mogli aktywować usługi. Aplikacja współpracuje z innymi komponentami Androida, aby zarządzać wrażeniami użytkownika od początku do końca.

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

Linie z numerami 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 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 API telefonii (np. getIccAuthentication), aby ukończyć wymianę zapytań i 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 uprawnienia do usługi lub dane konfiguracji do aplikacji klienta.

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

Integracja

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

Biblioteka service_entitlement i aplikacja ImsServiceEntitlement mogą być przeniesione na starsze platformy Androida, ponieważ nie mają zależności od interfejsu API Androida 12.

biblioteka service_entitlement

Biblioteka service_entitlement jest połączona statycznie z biblioteką ImsServiceEntitlement app, więc nie trzeba 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żywaj 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. Musisz uwzględnić prefiks https://.
KEY_FCM_SENDER_ID_STRING Identyfikator nadawcy FCM operatora.

Nie ustawiaj tej wartości, jeśli przewoźnik nie wymaga funkcji 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.

Zazwyczaj jest to wymagane przez przewoźnikó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 obsługi sieci dla usług IMS (VoLTE/VoWiFi/SMSoIP) w tle.

Jest to wymagane przez niektórych europejskich operatorów.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Ustaw na true, jeśli KEY_IMS_PROVISIONING_BOOL jest true.

Ruch HTTP do serwera uprawnień i portalu internetowego operatora jest przesyłany przez domyślną sieć, np. domyślną mobilną transmisję danych lub Wi-Fi.

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

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

Dodatkowy interfejs systemu do obsługi IMS

W tej sekcji opisano, jak OEM-y mogą obsługiwać dodatkowe elementy interfejsu użytkownika związane z udostępnianiem usługi IMS (np. wyświetlanie powiadomienia podczas udostępniania VoWiFi).

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

Interfejs użytkownika może odczytać stan obsługi za pomocą funkcji getProvisioningIntValue lub zarejestrować wywołanie zwrotne, aby monitorować zmiany stanu obsługi za pomocą funkcji registerProvisioningChangedCallback.

Zastępowanie konfiguracji na potrzeby testowania

Aby tymczasowo zmienić zachowanie aplikacji ImsServiceEntitlement na potrzeby testów, wykonaj podane niżej procedury. Szczegółowe informacje o zastępowaniu konfiguracji operatorów znajdziesz w artykule Zastępowanie konfiguracji operatorów.

Pomiń proces rejestracji w 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.

Pomiń konfigurację 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.

Zmień 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 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ż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