Prepoblación de números de teléfono Android para atajar la confusión de la Dual-SIM

by Paul McGuire | junio 16, 2023
móvil android

Introducción

A la hora de crear una aplicación móvil, especialmente si se trata de una aplicación de seguridad, lo que se busca es ofrecer a los usuarios la función más fluida, sencilla y segura posible.

Pedir a los usuarios que introduzcan su número de teléfono es una forma ideal y sencilla de asignar una identidad digital en el móvil, pero puede presentar varias posibilidades de problemas. Por ejemplo, el usuario podría introducir un código de país incorrecto, escribir mal su número de teléfono o introducir un número de teléfono completamente falsificado.

Otro problema relacionado puede ocurrir si estás implementando la autenticación silenciosa en tu aplicación y tu usuario tiene más de una SIM en su teléfono. Para que la autenticación silenciosa funcione, es importante que el usuario introduzca el número de teléfono asociado a la conexión de datos activa, que procede de una única SIM.

En esta entrada de blog, verás cómo puedes añadir la recuperación automática del número de teléfono en una aplicación móvil Android. También podrás determinar qué número de teléfono pertenece a la tarjeta SIM asociada a la conexión de datos móviles.

 

¿Cómo puedo añadir esto a mi aplicación Android?

AtenciónEste código de ejemplo sólo es funcional para Android 10 (29) y superiores. Aunque la funcionalidad existe dentro de las API de Android, puede obtener una respuesta vacía dependiendo del Operador de Red Móvil o del dispositivo Android al intentar recuperar su número de teléfono. Hemos creado este ejemplo de código para ayudarle a recuperar el número de teléfono de la tarjeta SIM asociada a la conexión de datos móviles activa.

Para empezar, tendrá que aplicar la función IDlayr API de accesibilidadmediante una solicitud `GET` a la dirección URL `https://{data_residency}.api.tru.id/coverage/v0.1/device_ip` con un campo IDlayr token de acceso que contiene el ámbito sólo como `cobertura`.

Una solicitud correcta dará una respuesta similar a la que se muestra a continuación:

Esta solicitud verificará que el Proveedor de Red Móvil (MNO) que proporciona la conexión de datos móviles activa es compatible con la Autenticación Silenciosa en IDlayr. También le proporcionará el `network_id` y cualquier `network_aliases` asociado con ese MNO, que se puede utilizar para verificar qué número de teléfono coincide con la conexión de datos.

A continuación, deberá compilar una lista de alias de red, incluyendo el network_id proporcionado en el ejemplo anterior.

A continuación, comprueba que la aplicación Android tiene permisos para las dos siguientes:

  • `READ_PHONE_NUMBERS` - Permite el acceso de lectura a los números de teléfono del dispositivo.
  • `READ_PHONE_STATE` - Da a la aplicación acceso de sólo lectura al estado del teléfono, incluyendo la información actual de la red celular.

Ahora, recupere el Servicio de Abono Telefónico para acceder a las funciones `activeSubscriptionInfoList` y `getDefaultDataSubscriptionId`.

Después de esto, lo que queda es recorrer la lista `activeSubscriptionInfoList` en busca de la información de suscripción.

Si el ID de información de suscripción coincide con el `getDefaultDataSubscriptionId`, compruebe que el ID de alias de red (de la API de accesibilidad) coincide con la cadena de suscripción compilada del código de país móvil y el código de red móvil (`mccString$mncString`).

A continuación se muestra un ejemplo completo para Android de esta funcionalidad:

Entonces, ¿cómo ayudará esto a mi problema relacionado con los usuarios de Dual SIM?

Al recuperar el ID de la ranura de datos predeterminada, puede comparar este ID con los ID de alias de red devueltos por el MNO a través de la API de Reachability de IDlayr, que se realizó a través de una conexión de datos celulares desde ese dispositivo. Una vez realizada la comparación, puede recuperar el número de teléfono de la tarjeta SIM relacionada con el ID de la ranura de datos predeterminada y volver a rellenarla.

Esto elimina la necesidad de que el usuario introduzca el número de teléfono, ya que probablemente querrá introducir el número no relacionado con la conexión de datos activa.

Ayudará a reducir los números de teléfono introducidos de forma incorrecta o malintencionada, evitando una mala experiencia de usuario, intentos de suplantación de identidad o incluso Ataques de bombeo de SMS.

Para ver un ejemplo práctico completo de cómo ejecutar una comprobación de la API de Reachability, rellenar previamente el número de teléfono con la conexión de datos móviles activa y, a continuación, ejecutar una comprobación del IDlayr PhoneCheckhemos creado un Repositorio GitHub.