我正在使用Cocos2d-iPhone开发游戏,在更新为iOS 6时,我注意到苹果改变了Game Center身份验证的方式,使用 authenticateHandler
而不是 authenticateWithCompletionHandler
。
我添加了新的身份验证方法,但是如果玩家尚未登录Game Center,则游戏现在会崩溃。如果用户已经登录,则进行身份验证没有问题。
以下是我的代码:
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
{
if (viewController != nil)
{
AppController *appDelegate = (AppController*)[UIApplication sharedApplication].delegate;
[delegate.viewController presentViewController:viewController animated:YES completion:nil];
}
else if (localPlayer.isAuthenticated)
{
NSLog(@"Player authenticated");
}
else
{
NSLog(@"Player authentication failed");
}
};
}
似乎在尝试呈现Game Center视图控制器时崩溃,即使我使用完全相同的代码来呈现GKTurnBasedMatchmakerViewController也没有问题。
非常感谢任何帮助。
编辑: 以下是崩溃时抛出的异常: UIApplicationInvalidInterfaceOrientation:支持的方向与应用程序没有共同方向,并且shouldAutorotate返回YES。