2013-06-03 15 views
12

Poza pytaniem użytkownika o wpisanie jego imienia, czy istnieje sposób na usunięcie go z urządzenia?Jakikolwiek sposób na uzyskanie nazwy użytkownika iPhone'a?

Próbowałem tej biblioteki, który próbuje wyodrębnić nazwę z [UIDevice currentDevice] name], ale to nie działa w wielu sytuacjach:

https://github.com/tiboll/TLLNameFromDevice

to nazwa występuje w książce telefonicznej lub gdziekolwiek indziej użytkownika do którego mamy dostęp w iOS 6?

+1

nie sądzę, że to możliwe na iOS: http://stackoverflow.com/a/ 12715598/1813169 – MTCoster

Odpowiedz

10

Można przejść przez wszystkie kontakty w książce adresowej i sprawdzić, czy którekolwiek z nich są oznaczone flagą właściciela.

Należy pamiętać, że spowoduje to wyświetlenie komunikatu "Ta aplikacja chce uzyskać dostęp do książki adresowej". Również Apple nie lubi tego typu rzeczy. W przewodniku przeglądu aplikacji określono, że aplikacja nie może wykorzystywać danych osobowych bez zgody użytkownika.

+11

Nareszcie odpowiedź, która nie od razu powtarza leniwą "to niemożliwe" nie odpowiedź ... (+1) –

+3

Gdzie jest flaga tego właściciela? – devios1

+1

@rckoenes, proszę rozwinąć tę flagę "właściciela". Przykładowy kod byłby bardzo pomocny. Dzięki. – Luke

2

Można użyć:

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

zrobiłem otrzymywać ostrzeżenia kompilatora, że ​​metody +currentHost i -names nie zostały znalezione. Biorąc pod uwagę to ostrzeżenie, nie jestem pewien, czy Apple zamierza udostępnić (lub nie) jako publicznie dostępny interfejs API, jednak wszystko działało zgodnie z oczekiwaniami, bez potrzeby dołączania dodatkowych plików nagłówkowych lub dodatkowych dodatkowych łączeń w postaci dodatkowych libraries/frameworks .

Edit 1: Można również spojrzeć na ten Link

Edit 2: Jeśli zintegrowany swoją aplikację z Facebook można łatwo pobrać informacji o użytkowniku, zobacz Facebook Fetch User Data

1

Można użyć CloudKit. Po fragmencie w Swift (błędy ignorowanie)

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)") 
         } 
        ) 
       } 
      } 
     ) 
    } 
) 

Powyższy kod został oparty na kodzie na http://www.snip2code.com/Snippet/109633/CloudKit-User-Info

+0

Należy zauważyć, że jeśli to uprawnienie nie zostało jeszcze przyznane, spowoduje to wyświetlenie użytkownikowi pozwolenia na ujawnienie się przez innych użytkowników tej samej aplikacji, którzy mają jego adres e-mail w książce adresowej. – algal

+0

Gdy próbuję tego, pojawia się komunikat o błędzie: Typ CKApplicationsPermissions nie ma członka "PermissionUserDiscoverability". –

Powiązane problemy