它在文档的清单 3-1“设置身份验证处理程序”中进行了解释(虽然有点不清楚)。这是我所做的:
- 如果没有经过身份验证的玩家,我会存储块返回的视图控制器,并在玩家尝试开始“多人”游戏时显示它。这比每次应用程序启动时立即显示视图控制器要好,因为有些人没有或想要游戏中心帐户,并且可能不想创建一个。
- 如果通过了身份验证,我会启用游戏中心功能,然后当玩家尝试开始游戏时,我会直接启动多人游戏(显然这里不需要显示控制器)。
- 如果该过程失败,那么我会禁用游戏中心功能和多人游戏,并像您一样显示一条消息,通过游戏中心应用程序登录,并提供启动游戏中心应用程序的选项。. 该代码几乎与苹果文档上的代码相同:
-(void)authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
__weak GKLocalPlayer *blockLocalPlayer = localPlayer;
//Block is called each time GameKit automatically authenticates
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
{
[self setLastError:error];
if (viewController)
{
self.authenticationViewController = viewController;
[self disableGameCenter];
}
else if (blockLocalPlayer.isAuthenticated)
{
[self authenticatedPlayer:blockLocalPlayer];
}
else
{
[self disableGameCenter];
}
};
}
self.authenticationViewController
是strong
,所以我可以稍后显示。