2016-04-11 8 views
6

Attualmente sto lavorando ad un'app web cordova.In che modo le app ottengono il numero di telefono MY per trovare amici?

Mi chiedo come Apps come Runkeeper mi mostri i contatti della mia rubrica, che usano anche Runkeeper. Su ogni contatto c'è un piccolo simbolo del telefono, quindi credo che il collegamento sia in qualche modo stabilito tramite il numero di telefono.

Runkeeper non ha mai ottenuto il numero di telefono del mio o del mio amico e non è leggibile dalle schede SIM.

L'unico modo possibile che mi veniva in mente è, che Runkeeper legge i miei altri account dal AccountManager ed effettua una connessione usando la mia WhatsApp-ID ...

Qualcuno sa come ciò accade e posso fare anche nella mia app cordova?

+0

Come fai a sapere che l'app non legge la tua rubrica? Le autorizzazioni nel Play Store dicono "leggi i tuoi contatti" –

+0

@ cricket_007 legge la mia rubrica, ma la domanda è, come ottiene il mio numero – Sentenza

+0

Il tuo numero è parte del tuo account Google e nella rubrica del telefono –

risposta

1

Runkeeper ha letto i tuoi contatti as per their own website. Quando installi l'app, memorizzano l'installazione nel loro database con il tuo numero o qualcosa che è stato originato dal tuo numero (versione crittografata per esempio).

Quando si desidera sapere chi ha l'app, eseguono la stessa crittografia sui numeri dei contatti e correlano con ciò che hanno.

Ad esempio:

User1 : [Phone 1234] 
User2 : [Phone 2341] 
User3 : [Phone 3412] 

Utente1 installa l'app, negozi RunKeeper lo sha1 del suo numero, salate o no, in loro database:

Runkeeper database of installs: 
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220 

Utente2 installa l'applicazione, negozi RunKeeper la sha1 del suo numero nel loro database:

Runkeeper database of installs: 
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220 <-user1 
    52c88b165a3a614a5e3ceac0074bad92d5bb1c0a <-user2 

Quando Utente2 carica l'attività t mostra i suoi contatti che stanno usando l'app, Runkeeper legge i tuoi contatti quindi per ogni contatto contattano il loro database e correlano senza mai inviare il tuo numero di telefono oi tuoi contatti all'esterno.

responsabilità

Questo è un approccio ad esempio, non ho idea se questo è il modo in cui lo stanno facendo. E 'eccessivamente semplificato per puro scopo di chiarezza.

Follow-up Mentre può essere vero che non hai mai fornito il numero di telefono per l'applicazione, non necessariamente significa che non ce l'ha già. Mettiti alla prova il codice in this answer per verificare se sia o non è leggibile

Apparentemente op Settings/About Phone/Status/My phone Number è vuota, così come il numero di conto di telefono Google, che sarebbe un altro modo di accedervi.

+0

"Runkeeper non ha mai ottenuto il mio numero di telefono e non è leggibile dalla carta SIM, però." – Sentenza

+0

Ciò ostacolerebbe solo la capacità degli altri utenti di trovarti come contatto che ha installato l'app, ma non li trovi ... http://stackoverflow.com/questions/2480288/programmaticamente-obtain-the-phone-number-of -the-android-phone –

+0

lo so, mi dispiace non l'ho chiarito. L'ho provato con il telefono di un amico ... Ci siamo trovati sul suo telefono e l'ho trovata sul mio telefono e per entrambi i telefoni il numero di telefono non è leggibile dalla carta SIM – Sentenza

0

Come hai chiesto nel cordova domanda ha i plugin che può recuperare i dati dal telefono Android corrente, da cui è possibile ottenere le informazioni sull'utente corrente Alcuni dei plugin è possibile per questo è:
- https://github.com/vliesaputra/DeviceInformationPlugin
- https://github.com/pbakondy/cordova-plugin-sim, ha proprieta 'phoneNumber' che può dare di telefono non del proprietario

Quando si effettua il login/registrazione che la raccolta di informazioni sul dispositivo e memorizzarla sul server qualche meccanismo


Per ottenere tutti i contatti ci sono anche alcuni plugin con cui è possibile ottenere tutti i contatti dalla lista dei contatti come questo:
https://github.com/apache/cordova-plugin-contacts, con questo plugin è possibile trovare alcuni contatti nella rubrica o ottenere tutti i contatti

document.addEventListener("deviceready", init, false); 
function init() { 

    navigator.contacts.find(
     [navigator.contacts.fieldType.displayName], 
     gotContacts, 
     errorHandler); 

} 

function errorHandler(e) { 
    console.log("errorHandler: "+e); 
} 

function gotContacts(c) { 
    console.log("gotContacts, number of results "+c.length); 
    for(var i=0, len=c.length; i<len; i++) { 
     console.dir(c[i]); 
    } 
} 

Ref e ulteriori informazioni: https://www.raymondcamden.com/2014/12/23/cordova-demo-viewing-all-contacts/


Un altro plug-in per ottenere tutti i contatti: https://github.com/dbaq/cordova-plugin-contacts-phone-numbers
da questo modi si può ottenere il vostro e altri utenti di contatto/nu telefono mber nel tuo progetto

Non so come stanno mappando i tuoi contatti per trovare quali amici stanno usando questa app. Potrebbe esserci qualche elaborazione lato server/client nella tua lista dei contatti o potrebbe essere qualcosa come la menzione di 'Juan Cortes' nella sua risposta

0

Ci sono alcune soluzioni alternative per recuperare il numero di telefono dell'utente poiché alcuni dei fornitori di schede sim non lo fanno permettere di leggerlo

  1. Primo tentativo di utilizzare TelephonyManager per verificare se è possibile leggere dalla scheda SIM (principalmente non può).

  2. La maggior parte dei dispositivi dispone di app whatsapp/telegram/o simili. Quindi controlla il loro account usando Accountmanager

  3. Se il numero di telefono è obbligatorio per l'app, è meglio chiedere all'utente di inserirlo e archiviarlo in sharedprefs dopo la verifica.

  4. utenti Leggi inviati i messaggi SMS e recuperano indirizzo del mittente (che è il numero di telefono)

Ecco la link per 1, 2 e 3

E la link per 4

Non li ho ancora provati, ma questi sono i rimedi di base che conosco finora.

Spero che sia utile