我想知道本地玩家的真实姓名,但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"
}
}
答案 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);