我曾经使用此代码登录游戏中心的用户帐号:
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
{
if (error != nil)
{
NSLog(@"LOGIN");
} else {
NSLog(@"CANT LOGIN");
}
}];
此代码适用于iOS 5.x但在iOS 6中崩溃,如果您帮忙修复它,我将不胜感激。
谢谢
答案 0 :(得分:3)
您需要检查iOS5或6. iOS6更改了身份验证功能
iOS6的
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
{
//Something
}
的iOS5
[localPlayer authenticateWithCompletionHandler:^(NSError *error)
{
//Something
}];
答案 1 :(得分:1)
这适用于iOS 6:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
if (viewController != nil) {
[self presentViewController:viewController animated:YES completion:nil];
} else if (localPlayer.isAuthenticated) {
// do post-authentication work
} else {
// do unauthenticated work, such as error message, etc
}
};
答案 2 :(得分:0)
这里有Game Center Programming Guide
这是您必须在iOS6中验证用户的方式:
- (void) authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
if (viewController != nil)
{
[self showAuthenticationDialogWhenReasonable: viewController
}
else if (localPlayer.isAuthenticated)
{
[self authenticatedPlayer: localPlayer];
}
else
{
[self disableGameCenter];
}
}];
}
您还应该结帐this question,因为您的应用可能因自动转发问题和游戏中心而崩溃,而不是认证机制本身