我曾经使用这个代码来登录游戏中心的用户账号:
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
{
if (error != nil)
{
NSLog(@"LOGIN");
} else {
NSLog(@"CANT LOGIN");
}
}];此代码在iOS 5.x上运行良好,但在iOS 6中会崩溃,如果您能帮助修复它,我将不胜感激。
谢谢
发布于 2012-10-20 03:19:21
您需要检查iOS5或6. iOS6更改了身份验证功能
iOS6
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
{
//Something
}iOS5
[localPlayer authenticateWithCompletionHandler:^(NSError *error)
{
//Something
}];发布于 2012-12-06 08:18:15
这在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
}
};发布于 2012-09-27 23:48:01
这就是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,因为您的应用程序可能会因为自动旋转问题和游戏中心而崩溃,而不是由于身份验证机制本身
https://stackoverflow.com/questions/12610890
复制相似问题