I dispositivi Android senza saldo dati consentono il traffico di rete, pertanto i gestori e le società di telecomunicazioni devono implementare protocolli di mitigazione. Android implementa una soluzione generica che consente ai gestori e alle società di telecomunicazioni di indicare quando un dispositivo ha esaurito il saldo.
La piattaforma Android fornisce un'app del gestore predefinita con un comportamento predefinito per la mitigazione del traffico basato sul segnale di rilevamento del captive portal. Offre inoltre ai gestori e agli OEM l'opportunità di personalizzare il comportamento con costi contenuti e grande flessibilità.
Esempi e origine
L'app del gestore predefinita si trova in platform/frameworks/base/packages/CarrierDefaultApp/.
Implementazione
L'app del gestore predefinita è configurata per offrire un'esperienza migliore ai gestori non configurati. I gestori possono utilizzare questo comportamento predefinito. Possono anche ignorare il comportamento predefinito aggiungendo mappature di azioni-segnali al file XML di configurazione del gestore. Possono decidere di non utilizzare l'app predefinita e utilizzare invece i privilegi UICC con la propria app del gestore autonoma.
Introduzione all'implementazione
Indicatori
Il framework Android supporta la configurazione delle azioni per i seguenti indicatori con parametri:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTEDTelephonyIntents.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 del gestore predefinita definisce un insieme di azioni supportate che possono essere mappate agli indicatori supportati. Queste sono definite 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 gestore implementa la propria app autonoma, può implementare il supporto per indicatori diversi da quelli menzionati in questa sezione. Può anche definire e configurare le proprie azioni.
Mappature predefinite di azioni-indicatori
Configura le azioni predefinite seguendo questa procedura:
- Definisci una chiave per gli indicatori supportati.
Le mappature predefinite di indicatori-azioni 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";
- Associa le azioni predefinite alle chiavi degli indicatori.
Gli ID delle azioni predefinite sono associati alle chiavi degli indicatori:
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 agli indicatori corrispondenti.
Ignora le azioni predefinite
Puoi definire azioni personalizzate per gli indicatori supportati nel file XML di configurazione del gestore associando gli ID delle azioni alle chiavi degli indicatori (definite in CarrierConfigManager.java). Ad esempio, la seguente mappatura disabilita gli APN a consumo e mostra una notifica del portale al momento del 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 ignora le azioni predefinite.
Convalida
Non sono disponibili test CTS, CTS Verifier o GTS per questa funzionalità.
Utilizza questi test di convalida manuale per convalidare la funzionalità:
- Convalida la notifica dell'indicatore di saldo esaurito del dispositivo della società di telecomunicazioni.
- Verifica la limitazione del reindirizzamento del traffico durante lo stato di saldo esaurito e il Wi-Fi disattivato.
- Verifica che il traffico di rete sia ridotto e che l'interfaccia utente delle notifiche venga visualizzata durante lo stato di saldo esaurito.
- Convalida la funzione di chiamata vocale/VoLTE durante lo stato di saldo esaurito.
- Verifica che le videochiamate siano bloccate nello stato di saldo esaurito.
- 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 durante lo stato di saldo esaurito.
- Convalida le funzioni Wi-Fi, WFC e Bluetooth durante lo stato di saldo esaurito.
- Disattiva il Wi-Fi. Verifica l'interfaccia utente delle notifiche di saldo esaurito e che il normale traffico di navigazione non venga reindirizzato al sito web di registrazione della società di telecomunicazioni. Verifica che se fai clic sul link nell'interfaccia utente delle notifiche, il browser venga indirizzato al sito web di registrazione della società di telecomunicazioni.
- Verifica che l'attivazione e la disattivazione della modalità aereo non reimpostino lo stato di limitazione del traffico.
- Verifica che la sostituzione di una SIM in servizio reimposti lo stato del traffico di rete.
- Verifica che il reinserimento della SIM con saldo esaurito riavvii il reindirizzamento del traffico e ripristini la limitazione del traffico di rete.
- Verifica che il riavvio dello smartphone riattivi il reindirizzamento e ripristini la limitazione del traffico e l'interfaccia utente delle notifiche.
- Tocca la notifica "captiveportal". Verifica che venga stabilita una connessione di rete limitata per consentire all'utente di aggiungere credito.
- Verifica che la ricarica o la riattivazione del saldo della SIM comporti il ripristino del traffico di rete mobile e la scomparsa del link della società di telecomunicazioni e della notifica di saldo esaurito.
- 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 riflettere queste personalizzazioni in unit test dedicati.