Prepopolazione dei numeri di telefono Android per risolvere la confusione del Dual-SIM

Introduzione
Quando si costruisce un'applicazione mobile, soprattutto se si tratta di un'applicazione di sicurezza, si vuole fornire agli utenti la funzione più semplice, diretta e sicura possibile.
La richiesta agli utenti di inserire il proprio numero di telefono è un modo ideale e semplice per assegnare un'identità digitale su cellulare, ma può presentare diverse possibilità di problemi. Ad esempio, l'utente potrebbe inserire un codice paese errato, sbagliare a digitare il numero di telefono o inserire un numero di telefono completamente falsificato.
Un altro problema correlato può verificarsi se si sta implementando l'autenticazione silenziosa nella propria applicazione e l'utente ha più di una SIM nel telefono. Affinché l'autenticazione silenziosa funzioni, è importante che l'utente inserisca il numero di telefono associato alla connessione dati attiva, che proviene da un'unica SIM.
In questo blog post vedremo come aggiungere il recupero automatico del numero di telefono in un'applicazione mobile Android. Sarete anche in grado di determinare quale numero di telefono appartiene alla scheda SIM associata alla connessione dati cellulare.
Come posso aggiungerlo alla mia applicazione Android?
Si prega di notareQuesto codice di esempio funziona solo per Android 10 (29) e versioni successive. Sebbene la funzionalità esista all'interno delle API di Android, quando si tenta di recuperare il numero di telefono si può ottenere una risposta vuota a seconda dell'operatore di rete mobile o del dispositivo Android. Abbiamo creato questo esempio di codice per aiutarvi a recuperare il numero di telefono della scheda SIM associata alla connessione dati cellulare attiva.
Per iniziare, è necessario implementare il metodo IDlayr API di raggiungibilitàeffettuando una richiesta `GET` all'URL `https://{data_residency}.api.tru.id/coverage/v0.1/device_ip` con un valore IDlayr token di accesso contenente l'ambito solo come "copertura".
Una richiesta andata a buon fine fornirà una risposta simile a quella riportata di seguito:
Questa richiesta verifica che il provider di rete mobile (MNO) che fornisce la connessione dati cellulare attiva sia supportato dall'Autenticazione silenziosa di IDlayr. Fornirà inoltre il `network_id` ed eventuali `network_aliases` associati a tale MNO, che possono essere utilizzati per verificare quale numero di telefono corrisponde alla connessione dati.
In seguito, è necessario compilare un elenco di alias di rete, compreso il network_id fornito nell'esempio precedente.
Successivamente, verificare che l'applicazione Android disponga delle autorizzazioni per i due seguenti punti:
- `READ_PHONE_NUMBERS` - Consente l'accesso in lettura ai numeri di telefono del dispositivo.
- `READ_PHONE_STATE` - Permette all'applicazione di accedere in sola lettura allo stato del telefono, comprese le informazioni sulla rete cellulare corrente.
A questo punto, recuperare il Telephony Subscription Service per accedere alle funzionalità `activeSubscriptionInfoList` e `getDefaultDataSubscriptionId`.
A questo punto, non resta che scorrere la `activeSubscriptionInfoList` per trovare le informazioni sull'abbonamento.
Se l'ID delle informazioni sull'abbonamento corrisponde a `getDefaultDataSubscriptionId`, verificare che l'ID dell'alias di rete (dall'API di raggiungibilità) corrisponda alla stringa di abbonamento compilata con il codice del paese mobile e il codice di rete mobile (`mccString$mncString`).
Un esempio completo di questa funzionalità in Android è il seguente:
Quindi, come può questo aiutare il mio problema relativo agli utenti Dual SIM?
Recuperando l'ID dell'alloggiamento dati predefinito, è possibile confrontarlo con gli ID degli alias di rete restituiti dall'MNO tramite l'API Reachability di IDlayr, che è stata effettuata tramite una connessione dati cellulare da quel dispositivo. Una volta ottenuta la corrispondenza, è possibile recuperare il numero di telefono della scheda SIM relativo all'ID dello slot dati predefinito e ripopolarlo.
In questo modo non è necessario che l'utente inserisca il numero di telefono, poiché è probabile che voglia inserire un numero non collegato alla connessione dati attiva.
Contribuirete a ridurre i numeri di telefono inseriti in modo errato o malevolo, evitando una cattiva esperienza dell'utente, tentativi di phishing o addirittura Attacchi di pompaggio via SMS.
Per un esempio completo di esecuzione di un controllo API di Reachability, prepopolazione del numero di telefono con la connessione dati cellulare attiva e successiva esecuzione di un'azione IDlayr Controllo del telefono, abbiamo creato un file Repository GitHub.