2016-05-29 7 views
0

Wenn der authentifizierte Handler bei der Rückkehr vom Game Center ausgelöst wird, wird der lokale Player mit displayName = "Me" aufgelistet und der Alias ​​ist der Benutzername des Spielers. Allerdings möchte ich stattdessen den vollständigen Namen des Benutzers anzeigen, also möchte ich den eigentlichen displayName und nicht "Ich".Wie erhalte ich den aktuellen Benutzernamen vom Game Center

Gibt es eine Möglichkeit zur Angabe Ich möchte den vollständigen Namen, nicht "Ich"?

Antwort

0

Ich bevorzuge es, den Alias ​​anzuzeigen, insbesondere beim Abgleich mit zufälligen Spielern, aber sowohl der Alias ​​als auch der displayName erfordern, dass die Authentifizierung des Spielers abgeschlossen ist, um die entsprechenden Werte zu erhalten.

Damit der Authentifizierungsprozess gestartet werden kann, müssen Sie den Authentifizierungshandler des lokalen Players festlegen. Einfaches Setzen setzt den Prozess in Gang und die Methode wird innerhalb weniger Sekunden aufgerufen. Danach sollten der Alias ​​und der displayName des lokalen Spielers die richtigen sein.

zum Beispiel:

class YourGameCenterManager:GKGameCenterControllerDelegate, 
        GKLocalPlayerListener 
{ 
    var localGCAccount: GKLocalPlayer! 
    var active    = false 

    init() 
    { 
    localGCAccount  = GKLocalPlayer.localPlayer() 
    localGCAccount?.authenticateHandler = gameCenterAuthentication 
    } 

    func gameCenterAuthentication(gameCenterVC :UIViewController?, err:NSError?) 
    {  
     if gameCenterVC != nil 
     {  
     // Game center wants to display a sign-on view ... 
     // note: I personally never got this to actually happen 
     } 
     else if localGCAccount?.authenticated ?? false 
     { 
     if not(active) 
     { 
      active = true 
      localGCAccount?.unregisterAllListeners() 
      localGCAccount?.registerListener(self) 

      // ... whatever else you need to do when Game Center is ready 
      // at this point localGCAccount's alias and displayName should be ok 
     } 
     } 
     else if active 
     { 
     //... Game Center just went bad ... do what you have to to to handle it  
     active = false  
     }   
    } 
Verwandte Themen