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