Dostosowywanie działania urządzenia w przypadku użytkowników z niedopłatą

Urządzenia z Androidem, które nie mają salda danych, przepuszczają ruch sieciowy, co wymaga od operatorów i operatorów telekomunikacyjnych wdrożenia protokołów zapobiegania. Android wdraża ogólne rozwiązanie, które umożliwia operatorom i operatorom telekomunikacyjnym wskazanie, kiedy na urządzeniu kończy się saldo.

Platforma Androida udostępnia domyślną aplikację operatora z domyślnym zachowaniem w zakresie łagodzenia ruchu na podstawie sygnału wykrywania portalu przechwytującego. Umożliwia też operatorom i OEM-om dostosowywanie działania przy niskich kosztach i dużej elastyczności.

Przykłady i źródło

Domyślna aplikacja operatora znajduje się w miejscu platform/frameworks/base/packages/CarrierDefaultApp/.

Implementacja

Domyślna aplikacja operatora jest skonfigurowana tak, aby zapewniać większą wygodę nieskonfigurowanym operatorom. Operatorzy mogą korzystać z tego domyślnego działania. Mogą też zastąpić domyślne działanie, dodając do pliku XML konfiguracji operatora mapowania sygnału na działanie. Mogą zrezygnować z aplikacji domyślnej i zamiast tego korzystać z uprawnień UICC w ramach własnej samodzielnej aplikacji operatora.

Wprowadzenie do implementacji

Signals

Platforma Android umożliwia konfigurowanie działań na podstawie tych sygnałów z parametrami:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Te sygnały znajdują się w sekcji frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Obsługiwane działania

Domyślna aplikacja operatora definiuje zestaw obsługiwanych działań, które można mapować na obsługiwane sygnały. Są one zdefiniowane w pliku CarrierActionUtils.java:

    public static final int CARRIER_ACTION_ENABLE_METERED_APNS               = 0;
    public static final int CARRIER_ACTION_DISABLE_METERED_APNS              = 1;
    public static final int CARRIER_ACTION_DISABLE_RADIO                     = 2;
    public static final int CARRIER_ACTION_ENABLE_RADIO                      = 3;
    public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION          = 4;
    public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
    public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS          = 6;

Uwaga: jeśli operator wdroży własną samodzielną aplikację, może wdrożyć obsługę sygnałów innych niż wymienione w tej sekcji. Mogą też definiować i konfigurować własne działania.

Domyślne mapowania sygnałów na działania

Aby skonfigurować działania domyślne:

  1. Określ klucz dla obsługiwanych sygnałów.

    Domyślne mapowania sygnałów na działania są zdefiniowane w CarrierConfigManager.java. Każdy z obsługiwanych sygnałów ma klucz:

    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY =
    "carrier_default_actions_on_dcfailure_string_array";
  2. Połącz domyślne działania z kluczami sygnału.

    Domyślne identyfikatory działań są powiązane z kluczami sygnału:

    sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY,                new String[]{
                    "1, 4"
                    //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION
                    // 4: CARRIER_ACTION_DISABLE_METERED_APNS
             });
    

    Platforma telefonii przypisuje te działania do odpowiednich sygnałów.

Zastępowanie działań domyślnych

W pliku konfiguracyjnym XML operatora możesz zdefiniować działania niestandardowe dla obsługiwanych sygnałów, powiązać identyfikatory działań z kluczami sygnału (zdefiniowane w pliku CarrierConfigManager.java). Na przykład poniższe mapowanie wyłącza płatne APN i wyświetli powiadomienie portalu po przekierowaniu:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

Framework telefonii ładuje te konfiguracje i zastępuje domyślne działania.

Weryfikacja

Ta funkcja nie jest objęta testami CTS, CTS Verifier ani GTS.

Aby zweryfikować funkcję, użyj tych testów ręcznej weryfikacji:

  1. Sprawdź powiadomienie o niedostatecznym sygnale urządzenia od operatora.
  2. Sprawdź ograniczanie przekierowywania ruchu w stanie nierównowagi i przy wyłączonym Wi-Fi.
  3. Sprawdź, czy ruch sieciowy jest ograniczony, a interfejs powiadomienia wyświetla się w stanie braku środków.
  4. Sprawdzanie funkcji połączeń głosowych/VoLTE w stanie braku równowagi.
  5. Sprawdź, czy rozmowy wideo są zablokowane w stanie nierównowagi.
  6. Gdy Wi-Fi jest włączone, sprawdź, czy użytkownik może kontynuować przeglądanie stron internetowych, a ruch przeglądania nie powoduje włączenia ruchu sieciowego w stanie nierównowagi.
  7. Sprawdzanie funkcji Wi-Fi, WFC i Bluetooth w stanie niesymetrycznym.
  8. Wyłącz Wi-Fi. Sprawdź interfejs powiadomienia o niedoładowaniu i upewnij się, że zwykły ruch przeglądania nie jest przekierowywany do witryny rejestracji operatora telefonii komórkowej. Sprawdź, czy po kliknięciu linku w interfejsie powiadomienia przeglądarka przekierowuje użytkownika do witryny rejestracji operatora.
  9. Sprawdź, czy przełączenie trybu samolotowego nie powoduje zresetowania stanu ograniczania przepustowości ruchu.
  10. Sprawdź, czy wymiana karty SIM w urządzeniu resetuje stan ruchu sieci.
  11. Sprawdź, czy ponowne włożenie karty SIM z niedopłatą powoduje ponowne przekierowanie ruchu i ponownie włącza ograniczanie ruchu sieciowego.
  12. Sprawdź, czy po ponownym uruchomieniu telefonu ponownie włącza się przekierowanie i pojawi się ograniczenie ruchu oraz interfejs powiadomień.
  13. Kliknij powiadomienie „captiveportal”. Sprawdź, czy połączenie z siecią z ograniczeniami zostało nawiązane, aby umożliwić użytkownikowi dodanie środków.
  14. Sprawdź, czy uzupełnienie salda na karcie SIM lub jej reaktywacja powoduje odzyskanie ruchu w sieci komórkowej oraz czy link do operatora i powiadomienie o brakującym saldzie znikają.
  15. Sprawdzanie poprawności po przywróceniu danych.

Domyślna aplikacja zawiera kilka przykładów testów jednostkowych oraz skrypt do ich uruchamiania (zob. tests/runtest.sh). Gdy wdrożesz dostosowaną wersję lub zachowanie, musisz odzwierciedlić te zmiany w dedykowanych testach jednostkowych.