1

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

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

此代码在 iOS 5.x 中运行良好,但在 iOS 6 中崩溃,如果您能帮助修复它,我将不胜感激。

谢谢

4

3 回答 3

3

您需要检查iOS5或6。iOS6更改了身份验证功能

iOS6

   localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
    {
        //Something
    }

iOS5

    [localPlayer authenticateWithCompletionHandler:^(NSError *error)
    {
        //Something
    }];
于 2012-10-19T19:19:21.257 回答
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
        }
    };
于 2012-12-06T00:18:15.170 回答
0

在这里你有游戏中心编程指南

这是您必须在 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];
         }
     }];
}

您还应该检查这个问题,因为您的应用程序可能由于自动旋转问题和游戏中心而崩溃,而不是身份验证机制本身

于 2012-09-27T15:48:00.540 回答