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

Game Center プログラミング ガイドはこちら

これは、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 に答える