在iOS 6中遇到Game Center问题

时间:2012-09-26 21:40:59

标签: iphone cocoa-touch ios6 game-center

我曾经使用此代码登录游戏中心的用户帐号:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
     {
         if (error != nil)
         {
             NSLog(@"LOGIN");
         } else {
             NSLog(@"CANT LOGIN");
         }
     }];

此代码适用于iOS 5.x但在iOS 6中崩溃,如果您帮忙修复它,我将不胜感激。

谢谢

3 个答案:

答案 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,因为您的应用可能因自动转发问题和游戏中心而崩溃,而不是认证机制本身