游戏中心。得到真名

时间:2013-03-13 12:23:00

标签: ios game-center

我想知道本地玩家的真实姓名,但GKLocalPlayer的displayName返回“Me”,而不是真实姓名。

编码我使用的内容:

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

 }

3 个答案:

答案 0 :(得分:4)

不确定displayName是否可用于检索本地用户的全名。来自Apple's documentation

  

玩家对象提供有关玩家的详细信息

     

当您的游戏需要特定玩家的详细信息时,它会通过向游戏中心查询来检索这些详细信息。您使用该播放器的播放器标识符检索播放器的信息。 Game Kit会在GKPlayer对象中将这些细节返回给您的游戏。

     
      
  • displayName

         

    您可以在自己的用户界面中为此播放器显示的用户可读字符串。例如,在网络匹配中,您可以显示匹配中每个玩家的显示名称,以便每个人都知道他们正在与谁对战。

         

    播放器的display name取决于播放器是否是在设备上验证的本地播放器的朋友。如果玩家是本地玩家的朋友,则显示名称是玩家的实际名称。如果玩家不是朋友,则显示名称是玩家的别名。

  •   

这意味着要检索其他玩家的名字。然后,如果您要求本地播放器的displayName,则返回“Me”是有意义的,因为您是此设备的当前用户。我想这与隐私政策有关。

可能的解决方法:

也许,您可以获取本地用户ID并使用它来尝试从该ID的玩家列表中检索真实姓名。但是我不知道是否会因为你是你自己的朋友而被带走。

答案 1 :(得分:3)

使用[GKLocalPlayer localPlayer]。

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

答案 2 :(得分:2)

你可以获得昵称或别名但是在确认认证完成后......其他方面它会给你带来零,

完成身份验证后使用此代码

NSString *userID = [[NSString alloc] initWithString:[GKLocalPlayer localPlayer].alias];
NSLog(@"%@", userID);