2013-03-13 15 views
5

Voglio sapere il vero nome del player locale, ma GKLocalPlayer's displayName restituisce "Me", non il vero nome.Game Center. Ottieni il vero nome

Codice quello che io uso:

void (^completitionHandler)(NSArray *, NSError *) = ^(NSArray *players, NSError *error) { 

    for (GKPlayer *p in players) { 
     NSString *alies = p.alies; 
     NSString *name = p.displayName; 
     NSLog(@"name = %@",name); //not real name, just "Me" 
    } 

} 
+0

Si prega di aggiornare la domanda con una soluzione o contrassegnare la risposta corretta da quelle indicate come accettata. Grazie! – veducm

risposta

3

Usa [GKLocalPlayer localPlayer].

NSString *alias = [GKLocalPlayer localPlayer].alias 
NSString *name = [GKLocalPlayer localPlayer].displayName 
+0

Grazie per la risposta, ma restituisce "Me" – Sinba

+1

La proprietà alias ha restituito il nome effettivo. Ha funzionato bene – user642252

4

Non sono sicuro displayName può essere utilizzato per recuperare il nome completo dell'utente locale. Da Apple's documentation:

Player oggetti forniscono dettagli sui giocatori

Quando il gioco ha bisogno di informazioni per un giocatore particolare, recupera quei dettagli facendo una query per Game Center. Recuperi le informazioni per un giocatore usando l'identificatore del giocatore di quel giocatore. Game Kit restituisce questi dettagli al tuo gioco in un oggetto GKPlayer.

  • displayName:

    Una stringa leggibile dall'utente è possibile visualizzare per questo giocatore nell'interfaccia utente proprio. Ad esempio, in una corrispondenza di rete, potresti mostrare i nomi visualizzati per ciascun giocatore nella partita in modo che tutti sappiano a chi stanno giocando contro.

    Il display name per un giocatore dipende dal fatto che il giocatore è un amico del giocatore locale autenticato sul dispositivo. Se il giocatore è un amico del giocatore locale, il nome visualizzato è il nome effettivo del giocatore. Se il giocatore non è un amico, il nome visualizzato è l'alias del giocatore.

E 'pensato per recuperare il nome di altri giocatori. Quindi, se stai chiedendo il displayName del player locale, ha senso che restituisca "Me", dato che sei l'utente corrente di questo dispositivo. Immagino che questo abbia a che fare con la politica sulla privacy.

possibile soluzione:

Forse, si potrebbe ottenere l'ID utente locale e utilizzarlo per cercare di recuperare il vero nome dalla lista dei giocatori per tale ID. Ma non so se sarebbe preso come sei un amico di te stesso o no.

Problemi correlati