2013-06-03 15 views
12

Al di fuori di chiedere all'utente di inserire il proprio nome, esiste un modo per rimuoverlo dal dispositivo?Un modo per ottenere il nome dell'utente iPhone?

ho provato questa biblioteca, che tenta di estrarre il nome da [UIDevice currentDevice] name], ma che non funziona in molte situazioni:

https://github.com/tiboll/TLLNameFromDevice

È il nome dell'utente presente nella rubrica o in qualsiasi altro luogo a cui abbiamo accesso in iOS 6?

+1

non credo che sia possibile su iOS: http://stackoverflow.com/a/ 12715598/1813169 – MTCoster

risposta

10

Bene, è possibile passare attraverso tutti i contatti in AddressBook e vedere se qualcuno di essi è contrassegnato con il flag del proprietario.

Ricorda che facendo ciò verrà visualizzato il messaggio "questa app vuole l'accesso alla rubrica". Anche Apple non è molto entusiasta di questo genere di cose. Nella guida alla revisione di app viene specificato che un'app non può utilizzare le informazioni personali senza il permesso dell'utente.

+11

Infine una risposta che non ripete immediatamente il pigro "è impossibile" non-risposta ... (+1) –

+3

Dove si trova questa bandiera del proprietario? – devios1

+1

@rckoenes, si prega di elaborare su questa bandiera 'proprietario'. Qualche esempio di codice sarebbe molto utile. Grazie. – Luke

2

È possibile utilizzare:

NSLog(@"user == %@",[[[NSHost currentHost] names] objectAtIndex:0]); 

ho ricevuto avvisi del compilatore che i metodi +currentHost e -names non sono stati trovati. Dato l'avvertimento, non sono sicuro dell'intenzione di Apple di renderlo disponibile (o meno) come API pubblicamente accessibile, tuttavia, tutto sembrava funzionare come previsto senza la necessità di includere ulteriori file di intestazione o collegamento in ulteriori libraries/frameworks .

Edit 1: Si può anche dare un'occhiata a questo Link

Edit 2: Se avete integrato la vostra applicazione Facebook si può facilmente recuperare le informazioni utente, vedere Facebook Fetch User Data

1

È possibile utilizzare CloudKit. A seguito di un frammento a Swift (errori ignorando):

let container = CKContainer.defaultContainer() 

container.fetchUserRecordIDWithCompletionHandler(
    { 
     (recordID, error) in 

     container.requestApplicationPermission(
      .PermissionUserDiscoverability, 
      { 
       (status, error2) in 

       if (status == CKApplicationPermissionStatus.Granted) 
       { 
        container.discoverUserInfoWithUserRecordID(
         recordID, 
         completionHandler: 
         { 
          (info, error3) in 

          println("\(info.firstName) \(info.lastName)") 
         } 
        ) 
       } 
      } 
     ) 
    } 
) 

Il codice di cui sopra è basata sul codice a http://www.snip2code.com/Snippet/109633/CloudKit-User-Info

+0

Va notato che, se questa autorizzazione non è già stata concessa, ciò richiederà all'utente il permesso di farsi scoprire dagli altri utenti della stessa app che hanno il suo indirizzo email nella loro rubrica. – algal

+0

Quando provo questo, viene visualizzato il messaggio di errore: Tipo CKApplicationsPermissions non ha membro 'PermissionUserDiscoverability'. –

Problemi correlati