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

Urządzenia z Androidem bez pakietu danych umożliwiają przesyłanie ruchu sieciowego, co wymaga od operatorów komórkowych i telekomunikacyjnych wdrożenia protokołów ograniczających. Android ma ogólne rozwiązanie, które umożliwia operatorom komórkowym i telekomunikacyjnym wskazywanie, kiedy na urządzeniu skończyły się środki.

Platforma Androida udostępnia domyślną aplikację operatora z domyślnym działaniem w zakresie ograniczania ruchu na podstawie sygnału wykrywania portalu przechwytującego. Daje też operatorom i producentom OEM możliwość dostosowywania działania urządzenia przy niskich kosztach i dużej elastyczności.

Przykłady i źródło

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

Implementacja

Domyślna aplikacja przewoźnika jest skonfigurowana tak, aby zapewnić lepsze wrażenia w przypadku przewoźników, którzy nie mają skonfigurowanych usług. Operatorzy mogą korzystać z tego domyślnego działania. Mogą też zastąpić domyślne działanie, dodając mapowania sygnałów na działania do pliku XML konfiguracji operatora. Mogą zrezygnować z aplikacji domyślnej i zamiast tego korzystać z uprawnień UICC w połączeniu z własną, niezależną aplikacją operatora.

Wprowadzenie do implementacji

Signals

Platforma Androida umożliwia konfigurowanie działań w odniesieniu do tych sygnałów sparametryzowanych:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Sygnały te znajdują się w frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Obsługiwane działania

Domyślna aplikacja operatora określa zestaw obsługiwanych działań, które można mapować na obsługiwane sygnały. Są one zdefiniowane w 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 w niej obsługiwać sygnały inne 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, wykonaj te czynności:

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

    Domyślne mapowania sygnałów na działania są zdefiniowane tutaj: 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. Powiąż domyślne działania z kluczami sygnałów.

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

    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 telefoniczna przypisuje te działania do odpowiednich sygnałów.

Zastępowanie działań domyślnych

Możesz zdefiniować działania niestandardowe dla obsługiwanych sygnałów w pliku XML konfiguracji operatora, przypisując identyfikatory działań do kluczy sygnałów (zdefiniowanych w CarrierConfigManager.java). Na przykład poniższe mapowanie wyłącza APN z pomiarem i wyświetla powiadomienie portalu po przekierowaniu:

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

Platforma telefoniczna wczytuje te konfiguracje i zastępuje domyślne działania.

Weryfikacja

W przypadku tej funkcji nie ma testów CTS, CTS Verifier ani GTS.

Aby sprawdzić, czy funkcja działa prawidłowo, przeprowadź te testy weryfikacji ręcznej:

  1. Weryfikacja powiadomienia operatora o braku środków na urządzeniu.
  2. Sprawdź ograniczanie przekierowania ruchu w przypadku braku równowagi i wyłączonego Wi-Fi.
  3. Sprawdź, czy ruch sieciowy jest ograniczony i czy w przypadku braku środków wyświetla się interfejs powiadomień.
  4. Sprawdź funkcję połączeń głosowych/VoLTE w przypadku braku środków na koncie.
  5. Sprawdź, czy rozmowy wideo są blokowane, gdy konto jest nieaktywne.
  6. Gdy Wi-Fi jest włączone, sprawdź, czy użytkownik może nadal przeglądać internet, a ruch przeglądania nie powoduje włączenia ruchu sieciowego w stanie braku równowagi.
  7. Sprawdź funkcje Wi-Fi, WFC i Bluetooth w stanie nierównowagi.
  8. Wyłącz Wi-Fi. Sprawdź interfejs powiadomienia o braku środków i upewnij się, że zwykły ruch przeglądania nie jest przekierowywany do witryny rejestracyjnej operatora telekomunikacyjnego. Sprawdź, czy kliknięcie linku w interfejsie powiadomień powoduje przejście przeglądarki do witryny rejestracyjnej operatora telekomunikacyjnego.
  9. Sprawdź, czy włączenie i wyłączenie trybu samolotowego nie resetuje stanu ograniczania przepustowości.
  10. Sprawdź, czy wymiana aktywnej karty SIM resetuje stan ruchu sieciowego.
  11. Sprawdź, czy ponowne włożenie karty SIM z ujemnym saldem powoduje ponowne przekierowanie ruchu i ponowne ograniczenie przepustowości sieci.
  12. Sprawdź, czy ponowne uruchomienie telefonu przywraca przekierowanie oraz ograniczenie ruchu i interfejs powiadomień.
  13. Kliknij powiadomienie „captiveportal”. Sprawdź, czy nawiązano połączenie z siecią o ograniczonym dostępie, aby umożliwić użytkownikowi dodanie środków.
  14. Sprawdź, czy doładowanie lub ponowna aktywacja karty SIM powoduje przywrócenie ruchu w sieci komórkowej oraz zniknięcie linku do operatora i powiadomienia o braku środków.
  15. Test sprawdzający po przywróceniu usługi danych.

Domyślna aplikacja zawiera kilka przykładów testów jednostkowych i skrypt do ich uruchamiania (patrz tests/runtest.sh). Jeśli wdrażasz dostosowaną wersję lub zachowanie, powinieneś odzwierciedlić te dostosowania w odpowiednich testach jednostkowych.