Los dispositivos Android sin saldo de datos permiten el tráfico de red, lo cual requiere que los proveedores y las empresas de telecomunicaciones implementen protocolos de mitigación. Android implementa una solución genérica que permite a los proveedores y empresas de telecomunicaciones indicar cuándo un dispositivo se quedó sin saldo.
La plataforma de Android proporciona una app del operador predeterminada con un comportamiento predeterminado para la mitigación de tráfico basada en el indicador de detección de portal cautivo. También les brinda a los operadores y OEMs la oportunidad de personalizar el comportamiento con bajo costo y gran flexibilidad.
Ejemplos y fuente
La app del operador predeterminada se encuentra enplatform/frameworks/base/packages/CarrierDefaultApp/.
Implementación
La app del operador predeterminada está configurada para proporcionar una mejor experiencia para los operadores no configurados de forma predeterminada. Los operadores pueden usar este comportamiento predeterminado. También pueden anular el comportamiento predeterminado si agregan asignaciones de indicadores a acciones al archivo XML de configuración del operador. Pueden decidir no usar la app predeterminada y, en su lugar, usar los privilegios de UICC con su propia app del operador independiente.
Introducción a la implementación
Signals
El framework de Android admite la configuración de acciones para los siguientes indicadores parametrizados:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Estos indicadores se encuentran en frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Acciones compatibles
La app del operador predeterminada define un conjunto de acciones compatibles que se pueden asignar a indicadores compatibles. Estas se definen en 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: Si un operador implementa su propia app independiente, puede implementar compatibilidad con indicadores distintos de los que se mencionan en esta sección. También pueden definir y configurar sus propias acciones.
Asignaciones predeterminadas de indicadores a acciones
Para configurar acciones predeterminadas, sigue este proceso:
- Define una clave para los indicadores admitidos.
Las asignaciones predeterminadas de indicadores a acciones se definen en
CarrierConfigManager.java
. Cada uno de los indicadores admitidos tiene una clave: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";
- Asocia acciones predeterminadas a teclas de indicadores.
Los IDs de acción predeterminados están asociados con las claves de indicadores:
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 });
El framework de telefonía asigna estas acciones a los indicadores correspondientes.
Cómo anular acciones predeterminadas
Puedes definir acciones personalizadas para los indicadores admitidos en el archivo XML de configuración del operador asociando los IDs de acción a las claves de indicadores (definidas en CarrierConfigManager.java
). Por ejemplo, la siguiente asignación inhabilita los APN medidos y muestra una notificación del portal en la redirección:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
El framework de telefonía carga estas configuraciones y anula las acciones predeterminadas.
Validación
No hay pruebas de CTS, verificador de CTS ni GTS para esta función.
Usa estas pruebas de validación manual para validar la función:
- Valida la notificación de señal fuera de balance del dispositivo de la empresa de telecomunicaciones.
- Verifica la limitación del redireccionamiento de tráfico durante el estado de desequilibrio y con Wi-Fi apagado.
- Verifica que se reduzca el tráfico de red y que aparezca la IU de notificaciones durante el estado fuera de balance.
- Valida la función de llamada de voz o VoLTE durante el estado de saldo insuficiente.
- Verifica que las videollamadas estén bloqueadas en el estado de saldo insuficiente.
- Con el Wi-Fi activado, verifica que el usuario pueda seguir navegando por la Web y que el tráfico de navegación no active el tráfico de red mientras esté en el estado fuera de balance.
- Valida las funciones de Wi-Fi, WFC y Bluetooth durante el estado fuera de balance.
- Desactiva la conexión Wi-Fi. Verifica la IU de la notificación de saldo insuficiente y que el tráfico de navegación normal no se redireccione al sitio web de registro de la empresa de telecomunicaciones. Verifica que, cuando se hace clic en el vínculo de la IU de la notificación, el navegador dirija al usuario al sitio web de registro de la empresa de telecomunicaciones.
- Verifica que activar o desactivar el modo de avión no restablezca el estado de limitación de tráfico.
- Verifica que el cambio de una SIM en servicio restablezca el estado del tráfico de red.
- Verifica que volver a insertar la SIM sin saldo reinicie el redireccionamiento de tráfico y vuelva a obtener la limitación del tráfico de red.
- Verifica que reiniciar el teléfono reactive el redireccionamiento y restablezca el limitador de tráfico y la IU de notificaciones.
- Presiona la notificación "captiveportal". Verifica que se establezca una conexión de red restringida para permitir que el usuario agregue créditos.
- Verifica que la recarga o reactivación del saldo de la SIM haga que se recupere el tráfico de la red celular y que desaparezcan el vínculo de la empresa de telecomunicaciones y la notificación de saldo insuficiente.
- Prueba de validación después de la recuperación del servicio de datos
La app predeterminada proporciona algunos ejemplos de pruebas de unidades y una secuencia de comandos para ejecutarlas (consulta tests/runtest.sh
). Cuando implementes una versión o un comportamiento personalizados, debes duplicar esas personalizaciones en pruebas de unidades dedicadas.