2013-03-13 5 views
5

Ich möchte den echten Namen des lokalen Spielers wissen, aber GKLocalPlayer's displayName zurück "Ich", nicht richtiger Name.Spielzentrum. Holen Sie sich echten Namen

-Code, was ich benutze:

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

Bitte aktualisieren Sie die Frage mit einer Lösung oder markieren Sie die richtige Antwort aus den angegebenen als die akzeptierte. Vielen Dank! – veducm

Antwort

3

Verwenden [GKLocalPlayer localPlayer].

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

Danke für die Antwort, aber es gibt "Me" zurück – Sinba

+1

Die Alias-Eigenschaft gab den tatsächlichen Namen zurück. Hat gut funktioniert. – user642252

4

Nicht sicher displayName können die lokalen Benutzer vollständigen Namen abgerufen werden. Von Apple's documentation:

Spielern Objekte Details über Spieler

Wenn Ihr Spiel benötigt Details für einen bestimmten Spieler Geben Sie ruft es diese Details durch eine Abfrage an Game Center zu machen. Sie rufen Informationen für einen Spieler mithilfe der Player-ID dieses Players ab. Game Kit gibt diese Details in einem GKPlayer-Objekt an Ihr Spiel zurück.

  • display:

    Ein Benutzer lesbare Zeichenfolge, die Sie für diesen Spieler in der eigenen Benutzeroberfläche angezeigt werden kann. In einem Netzwerk-Match können Sie beispielsweise die Anzeigenamen für jeden Spieler im Spiel anzeigen, sodass jeder weiß, gegen wen er spielt.

    Die display name für einen Player hängt davon ab, ob der Player ein Freund des lokalen Players ist, der auf dem Gerät authentifiziert wurde. Wenn der Spieler ein Freund des lokalen Spielers ist, dann ist der Anzeigename der tatsächliche Name des Spielers. Wenn der Spieler kein Freund ist, ist der Anzeigename der Alias ​​des Spielers.

Es soll den Namen anderer Spieler abzurufen. Wenn Sie dann nach dem displayName des lokalen Players fragen, ist es sinnvoll, dass "Me" zurückgegeben wird, da Sie der aktuelle Benutzer dieses Geräts sind. Ich denke, das hat mit der Datenschutzerklärung zu tun.

Mögliche Lösung:

Vielleicht könnten Sie die lokale Benutzer-ID erhalten und es verwenden, um zu versuchen, den richtigen Namen aus der Liste der Spieler für diese ID abzurufen. Aber ich weiß nicht, ob es als ein Freund von dir genommen werden würde oder nicht.