私は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 ビルドを実行しています。
どうもありがとう!