我意识到以下方法在 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 时立即显示。当用户登录时,它还会显示“欢迎回来”弹出框。
第二种方法——iOS 6 的方式——不显示GC login screen
,正如我上面所说的,但如果用户已经通过 GC 应用程序登录到 GC ,它会显示“欢迎回来” 。
有关信息,我已经在我的 iPhone 5 (6.0.1)、我的 iPad mini (6.0.2) 和模拟器 (6.0) 上进行了尝试。
任何人都知道为什么会发生这种情况?GC login view controller
如果这是我需要做的,我如何手动显示第二种方法?