Personalizzare il comportamento del dispositivo per gli utenti con un piano non in linea

I dispositivi Android senza saldo dati consentono il traffico di rete, richiedendo agli operatori e alle società di telecomunicazioni di implementare protocolli di mitigazione. Android implementa una soluzione generica che consente agli operatori e alle società di telecomunicazioni di indicare quando il credito di un dispositivo è esaurito.

La piattaforma Android fornisce un'app operatore predefinita con un comportamento predefinito per la riduzione del traffico in base al segnale di rilevamento del captive portal. Inoltre, offre a operatori e OEM l'opportunità di personalizzare il comportamento con costi contenuti e grande flessibilità.

Esempi e origine

L'app operatore predefinita si trova inplatform/frameworks/base/packages/CarrierDefaultApp/.

Implementazione

L'app operatore predefinita è configurata per offrire un'esperienza migliore per gli operatori non configurati. Gli operatori possono utilizzare questo comportamento predefinito. Possono anche ignorare il comportamento predefinito aggiungendo mappature segnale-azione al file XML di configurazione dell'operatore. Possono decidere di non utilizzare l'app predefinita e utilizzare invece i privilegi UICC con la propria app operatore autonoma.

Introduzione all'implementazione

Segnali

Il framework Android supporta la configurazione delle azioni per i seguenti segnali parametrizzati:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Questi indicatori si trovano in frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Azioni supportate

L'app operatore predefinita definisce un insieme di azioni supportate che possono essere mappate a indicatori supportati. Questi sono definiti in 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;

Nota:se un operatore implementa una propria app autonoma, può implementare il supporto per indicatori diversi da quelli menzionati in questa sezione. Possono anche definire e configurare le proprie azioni.

Mappature segnale-azione predefinite

Configura le azioni predefinite seguendo questa procedura:

  1. Definisci una chiave per gli indicatori supportati.

    Le mappature predefinite dei segnali di invito all'azione sono definite in CarrierConfigManager.java. Ciascuno degli indicatori supportati ha una chiave:

    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. Associa azioni predefinite ai tasti di segnale.

    Gli ID azione predefiniti sono associati alle chiavi di indicatore:

    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
             });
    

    Il framework di telefonia mappa queste azioni ai segnali corrispondenti.

Ignorare le azioni predefinite

Puoi definire azioni personalizzate per i segnali supportati nel file XML di configurazione dell'operatore associando gli ID azione alle chiavi del segnale (definite in CarrierConfigManager.java). Ad esempio, il seguente mapping disattiva gli APN a consumo e mostra una notifica del portale al reindirizzamento:

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

Il framework di telefonia carica queste configurazioni e sostituisce le azioni predefinite.

Convalida

Non sono presenti test CTS, CTS Verifier o GTS per questa funzionalità.

Utilizza questi test di convalida manuale per convalidare la funzionalità:

  1. Convalida la notifica del segnale di saldo insufficiente dell'operatore di telecomunicazioni.
  2. Verifica la limitazione del reindirizzamento del traffico durante lo stato di saldo negativo e il Wi-Fi disattivato.
  3. Verifica che il traffico di rete sia disattivato e che l'interfaccia utente delle notifiche venga visualizzata durante lo stato di esaurimento del credito.
  4. Convalida la funzione di chiamata vocale/VoLTE durante lo stato di saldo insufficiente.
  5. Verifica che le videochiamate siano bloccate in caso di saldo insufficiente.
  6. Con il Wi-Fi attivo, verifica che l'utente possa continuare a navigare sul web e che il traffico di navigazione non attivi il traffico di rete quando lo stato è di saldo insufficiente.
  7. Convalida le funzioni Wi-Fi, WFC e Bluetooth durante lo stato di squilibrio.
  8. Disattiva il Wi-Fi. Verifica l'interfaccia utente della notifica di saldo insufficiente e che il traffico di navigazione ordinario non venga reindirizzato al sito web di registrazione dell'operatore di telecomunicazioni. Verifica Se fai clic sul link nell'interfaccia utente di notifica, il browser viene indirizzato al sito web di registrazione dell'operatore di telecomunicazioni.
  9. Verifica che l'attivazione/disattivazione della modalità aereo non reimposti lo stato della limitazione del traffico.
  10. Verifica che la sostituzione di una SIM in servizio reimposti lo stato del traffico di rete.
  11. Verifica che il reinserimento della SIM con saldo insufficiente riavvii il reindirizzamento del traffico e ottenga di nuovo la limitazione del traffico di rete.
  12. Verifica che il riavvio dello smartphone riattivi il reindirizzamento e ripristini la limitazione del traffico e l'interfaccia utente delle notifiche.
  13. Tocca la notifica "captiveportal". Verifica che sia stabilita una connessione di rete limitata per consentire all'utente di aggiungere crediti.
  14. Verifica che la ricarica o la riattivazione del saldo della SIM provochi il recupero del traffico di rete mobile e la scomparsa del link all'operatore e della notifica di saldo insufficiente.
  15. Test di integrità dopo il ripristino del servizio dati.

L'app predefinita fornisce alcuni esempi di unit test e uno script per eseguirli (vedi tests/runtest.sh). Quando implementi una versione o un comportamento personalizzato, devi rispecchiare queste personalizzazioni in unit test dedicati.