Блок аутентификации игрового центра продолжает вызываться - PullRequest
1 голос
/ 22 декабря 2010

Итак, я заметил, что после однократного вызова initializeGameCenter () каждый раз, когда мое приложение возвращается на передний план, вызывается приведенный ниже блок (после authenticateWithCompletionHandler) - это обычное поведение Game Center ?? (Я удостоверился, что установил точку останова, чтобы убедиться, что вызывается только блок, но не сам initializeGameCenter)

- (void)initializeGameCenter
{
    // Don't initialize Game Center unless we have access to the classes from iOS 4.1 or greater. 

    if (![self isGameCenterAvailable]) {
        return;
    }



    [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {

        NSDictionary *userInfo = nil;
        if (error == nil) {
            // Game Center will present a "Welcome Back" message when we have authenticated
            GTMLoggerInfo(@"Game Center successfully authenticated");
        }
        else {
            userInfo = [NSDictionary dictionaryWithObject:error forKey:@"NSError"];
            GTMLoggerDebug(@"error authenticating game center");
        }
        [[NSNotificationCenter defaultCenter] postNotificationName:GameCenterAuthenticateDidFinishNotification
                                                            object:self
                                                          userInfo:userInfo]; 

    }];
}

1 Ответ

4 голосов
/ 24 марта 2011

Из Руководства по программированию Game Kit:

"[когда] ваша игра возвращается на передний план, Game Kit аутентифицирует игрока, и вызывается ваш обработчик аутентификации."

http://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Users/Users.html#//apple_ref/doc/uid/TP40008304-CH8-SW11

Т.е. ваш блок завершения будет вызываться каждый раз, когда ваше приложение перемещается на передний план, как если бы вы вызвали -[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:]

...