1

私はios 7を使用しており、次のコードを使用しています:

-(IBAction)authenticateLocalPlayerWithViewController
{

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    __weak GKLocalPlayer *blockLocalPlayer = localPlayer;
    localPlayer.authenticateHandler = ^(UIViewController *receivedViewController, NSError *error){

        if (receivedViewController != nil)
        {

            [self presentViewController:receivedViewController animated:YES completion:nil];

        } else if (blockLocalPlayer.isAuthenticated) {

            signinButton.hidden = YES;
            leaderboardButton.alpha = 1.0;
            leaderboardButton.enabled = YES;
            achievementsButton.alpha = 1.0;
            achievementsButton.enabled = YES;


            NSString *identifier;
            [self reportAchievement1Identifier:identifier percentComplete:((interactiveHighscore/10000)*100.0)];
            [self reportAchievement2Identifier:identifier percentComplete:((interactiveHighscore/100000)*100.0)];
            [self reportAchievement3Identifier:identifier percentComplete:((interactiveHighscore/1000000)*100.0)];
            [self reportAchievement4Identifier:identifier percentComplete:((interactiveHighscore/100000000)*100.0)];
            [self reportAchievement5Identifier:identifier percentComplete:((allCoins/100000)*100.0)];

            [self submitMyInteractiveScore];
            [self submitMyNormalScore];

            BOOL isRunMoreThanOnceGC = [[NSUserDefaults standardUserDefaults] boolForKey:@"isRunMoreThanOnceGC"];
            if (!isRunMoreThanOnceGC) {

                UIAlertView *alert = [[UIAlertView alloc]
                                      initWithTitle:@"Game Center Sign In Gift"
                                      message:@"Thanks for signing in with game center here is 50 Coins."
                                      delegate:nil
                                      cancelButtonTitle:@"Thanks!."
                                      otherButtonTitles:nil];
                [alert show];

                allCoins = [[NSUserDefaults standardUserDefaults] integerForKey:@"allCoins"];
                allCoins += 50;

                [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isRunMoreThanOnceGC"];
                [[NSUserDefaults standardUserDefaults] synchronize];


            }
        } else {

            signinButton.hidden = NO;

            UIAlertView *alert = [[UIAlertView alloc]
                                  initWithTitle:@"Game Center Not Available"
                                  message:@"Uh Oh! Seems there was an error trying to sign in for Game Center. Try logging in through the Game Center app."
                                  delegate:nil
                                  cancelButtonTitle:@"Ok, Thanks."
                                  otherButtonTitles:nil];
            [alert show];

        }

        NSLog(@"Error: %d", [error code]);
    };
}

ユーザーを認証しようとしています。まず、ルート コントローラーの viewDidLoad で、次のように呼び出します。

//get game center
LeaderboardsViewController *LVC = [[LeaderboardsViewController alloc] init];
[LVC authenticateLocalPlayerWithViewController];

次に、これを取得します。

エラー: 0 警告: ウィンドウ階層にないビューで表示しようとしています!

そのため、gamecenterviewcontroller クラス (認証メソッドがある場所) のボタンを押してみましたが、何も得られません。ログには何も表示されず、何も表示されません....

iOS 7 GM ビルドを実行しています。

どうもありがとう!

4

1 に答える 1