この次の方法は iOS 6 では推奨されていませんが、引き続き機能します。非推奨のメソッドの警告を発行するだけです。私のAppDelegate.m
ファイルから:
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:(^(NSError *error) {
if (localPlayer.isAuthenticated) {
self.gameCenterAuthenticationComplete = YES;
if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString:localPlayer.playerID]) {
self.currentPlayerID = localPlayer.playerID;
}
} else {
self.gameCenterAuthenticationComplete = NO;
}
})];
そのため、代わりにこのメソッドを使用しようとしています。これは、iOS 6 で適切な方法です。アラートが表示されますが、表示されませんGame Center login view controller
。
[[GKLocalPlayer localPlayer] setAuthenticateHandler:(^(UIViewController *viewController, NSError *error) {
if (localPlayer.isAuthenticated) {
self.gameCenterAuthenticationComplete = YES;
if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString:localPlayer.playerID]) {
self.currentPlayerID = localPlayer.playerID;
}
} else {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"NOT AUTHORIZED"
message:@"This game requires Game Center to create matches."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
self.gameCenterAuthenticationComplete = NO;
}
})];
}
return YES;
Game Center login view
最初のアプローチ (非推奨の方法) では、アプリが開いてユーザーが GC にサインインしていないことを検出すると、すぐに が表示されます。また、ユーザーがログインすると、 「おかえり」ポップオーバーが表示されます。
2 番目のアプローチ (iOS 6 の方法) ではGC login screen
、上で述べたように は表示されませんが、ユーザーが GC アプリ経由で GC に既にログインしている場合は、「おかえりなさい」と表示されます。
参考までに、iPhone 5 (6.0.1)、iPad mini (6.0.2)、およびシミュレーター (6.0) でこれを試しました。
なぜこれが起こるのか誰にも分かりますか?それが必要な場合、2番目のアプローチで手動で表示するGC login view controller
にはどうすればよいですか?