6

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

编写我使用的代码:

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

 }
4

3 回答 3

4

不确定displayName是否可用于检索本地用户全名。来自苹果的文档

播放器对象提供有关播放器的详细信息

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

  • 显示名称:

    您可以在自己的用户界面中为此播放器显示的用户可读字符串。例如,在网络比赛中,您可能会显示比赛中每个球员的显示名称,以便每个人都知道他们的对手是谁。

    玩家的显示名称取决于该玩家是否是在设备上通过身份验证的本地玩家的朋友。如果玩家是本地玩家的朋友,那么显示名就是玩家的真实姓名。如果玩家不是朋友,那么显示名称就是玩家的别名。

它旨在检索其他玩家的姓名。然后,如果您询问本地播放器的 displayName,它返回“Me”是有道理的,因为您是该设备的当前用户。我想这与隐私政策有关。

可能的解决方法:

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

于 2013-03-13T15:21:39.533 回答
3

使用 [ GKLocalPlayer localPlayer ]。

NSString *alias = [GKLocalPlayer localPlayer].alias
NSString *name = [GKLocalPlayer localPlayer].displayName
于 2013-03-13T15:05:59.417 回答
2

您可以获得昵称或别名,但在确保完成身份验证之后.. 否则它将给您带来零,

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

NSString *userID = [[NSString alloc] initWithString:[GKLocalPlayer localPlayer].alias];
NSLog(@"%@", userID);
于 2018-04-14T02:18:33.300 回答