2

我意识到以下方法在 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如果这是我需要做的,我如何手动显示第二种方法?

4

1 回答 1

3

您必须自己显示登录屏幕。对 setAuthenticationHandler 的调用设置屏幕并在“viewController”中为您提供指向它的指针。你就说

[self presentViewController:viewController];

这使您可以在游戏环境中最有意义的时候显示登录屏幕。

顺便说一句...您没有检查错误。错误很常见(例如,无法访问网络)。

于 2013-01-04T15:37:57.733 回答