Uprawnienia do usługi IMS

Od Androida 12 Android obsługuje konfigurację uprawnień do usług TS.43, czyli specyfikację GSMA, która określa etap weryfikacji uprawnień do aktywacji usług, w tym Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), aktywacji usługi na urządzeniu (ODSA) 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 pozwala dostawcy usług informować urządzenia mobilne o stanie usług sieciowych IP Multimedia Subsystem (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 przy użyciu uwierzytelniania EAP-AKA bez konieczności ręcznego wprowadzania danych logowania przez użytkowników.

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

  • Zmniejsza koszty testowania i certyfikacji dla operatorów, ponieważ ta funkcja uprawnień może być używana w wielu produktach i przez wielu producentów OEM.
  • Zmniejsza koszty rozwoju dla producentów urządzeń dzięki standardowej aplikacji na Androida.
  • Umożliwia producentom urządzeń i operatorom współtworzenie kodu funkcji, ponieważ jest ona dostępna na licencji open source.
  • Umożliwia operatorom w Ameryce Północnej zarządzanie adresem alarmowym.

Architektura

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

Funkcja uprawnień TS.43

Rysunek 1. Architektura funkcji uprawnień TS.43

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

  • service_entitlement Biblioteka statycznaTS.43 Service API:ta biblioteka implementuje specyfikację TS.43, współpracuje z serwerem uprawnień operatora i udostępnia interfejsy API dla aplikacji na potrzeby każdego przypadku użycia TS.43.
  • ImsServiceEntitlement aplikacja kliencka: ta aplikacja korzysta z interfejsu TS.43 Service API. Aplikacja implementuje elementy interfejsu, w tym widoki WebView do renderowania portalu usług operatora, aby użytkownicy mogli aktywować usługi, oraz współpracuje z innymi komponentami Androida, aby zarządzać wygodą użytkownika.

    Więcej informacji o tym, jak skonfigurować Androida do współpracy z serwerem uprawnień operatora opartym na TS.43, znajdziesz w artykule Aplikacja ImsServiceEntitlement.

Numerowane linie na rysunku 1 pokazują, jak komponenty funkcji uprawnień do usług IMS komunikują się ze sobą. Poniżej opisujemy każdy z oznaczonych kroków:

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

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

(3) Interfejs TS.43 Service API wywołuje interfejsy Telephony API (np. getIccAuthentication), aby zakończyć wyzwanie-odpowiedź EAP-AKA.

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

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

(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 opisujemy proces integracji biblioteki service_entitlement i aplikacji ImsServiceEntitlement.

Ponieważ nie ma zależności od interfejsu API Androida 12, bibliotekę service_entitlement i aplikację ImsServiceEntitlement można przenieść do starszych wersji Androida.

Biblioteka service_entitlement

Ponieważ biblioteka service_entitlement jest statycznie połączona z aplikacją ImsServiceEntitlement, 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ą na potrzeby przypadków użycia uprawnień innych niż TS.43 opartych na protokole EAP-AKA.

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

  • Aplikacja TS.43 korzystająca z protokołu TS.43 HTTP zaimplementowanego w bibliotece: użyj 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ępnianych w klasie EapAkaHelper.

Aplikacja ImsServiceEntitlement

Domyślnie Android zawiera aplikację ImsServiceEntitlement zainstalowaną w partycji produktu jako aplikacja z uprawnieniami. 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 operator nie wymaga FCM.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Ustaw wartość true, jeśli operator wymaga interfejsu portalu internetowego, aby użytkownicy mogli zarejestrować się w usłudze VoWiFi. Na przykład wyrażenie zgody na warunki lub wpisanie adresu alarmowego.

Jest to zwykle wymagane przez operatorów w Ameryce Północnej.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Ustaw wartość 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 udostępniania usług IMS (VoLTE/VoWiFi/SMSoIP) w sieci w tle.

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

Ruch HTTP do serwera uprawnień i portalu internetowego operatora odbywa się przez sieć domyślną, np. domyślne dane mobilne lub Wi-Fi.

Partnerzy GMS: te usługi są obsługiwane przez aplikację uprawnień TS.43 w Androidzie 12 zgodnie ze specyfikacją TS.43 w wersji 5.0:

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

Dodatkowy interfejs systemowy do udostępniania IMS

W tej sekcji opisujemy, jak producenci OEM mogą obsługiwać dodatkowe elementy interfejsu systemowego związane z udostępnianiem usług IMS (np. wyświetlanie powiadomienia, gdy usługa VoWiFi jest udostępniana).

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

Interfejs systemowy może następnie odczytać stan udostępniania za pomocą getProvisioningIntValue lub zarejestrować wywołanie zwrotne, aby monitorować zmianę stanu udostępniania za pomocą registerProvisioningChangedCallback.

Zastępowanie konfiguracji na potrzeby testowania

Aby tymczasowo zmienić działanie aplikacji ImsServiceEntitlement na potrzeby testowania, wykonaj te czynności. Więcej informacji o zastępowaniu konfiguracji operatora znajdziesz w artykule Zastępowanie konfiguracji operatora.

Pomijanie procesu rejestracji VoWiFi

Aby pominąć proces rejestracji VoWiFi i umożliwić 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.

Pomijanie udostępniania 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.

Zmienianie 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 URL. Musisz uwzględnić prefiks https://.

Zastępowanie konfiguracji operatora

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

To polecenie pokazuje, jak zastąpić klucz konfiguracji operatora carrier_volte_provisioning_required_bool i ustawić jego wartość na false. Aby zastąpić wiele konfiguracji, możesz uruchomić to polecenie kilka razy.

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