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.
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.ImsServiceEntitlement
aplikacja 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