Как проверить, что подключение к Game Center (серверам) доступно? - PullRequest
0 голосов
/ 30 августа 2011

До сих пор я успешно реализовывал Game Center для моего приложения. Авторизация игроков в порядке, так же как и отчеты о достижениях.

Моя проблема возникает, когда я хотел проверить поведение приложения на iPad в режиме полета.

Игрок не будет авторизован (как я ожидал, поэтому не проблема) с этим кодом.

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if ([localPlayer isAuthenticated] == YES){
    NSLog(@"The local player has already authenticated.");
    return;
} else {

    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
        if (error == nil){
            NSLog(@"Successfully authenticated the local player.");
            NSLog(@"Player Alias = %@", [localPlayer alias]);

        } else {
            NSLog(@"Failed to authenticate the player with error = %@", error);
                        }
    }];
}

Но когда я позже в UIView проверил, авторизован ли игрок (так что я знаю, разрешу ли мне кнопку показа достижений) с этим кодом [achievementButton setEnabled:[localPlayer isAuthenticated]]; Я всегда получаю ДА, пока пользователь вошел в Game Center перед входом в режим полета.

Похоже, даже если соединение с серверами Game Center отсутствует, предыдущий авторизованный игрок все еще считается авторизованным.

Это приводит к тому, что моя кнопка отображается, но, конечно, Game Center сообщает, что она не может подключиться.

Итак, как лучше всего убедиться в наличии истинного соединения с Game Center?

Приветствия

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Посмотрите на SCNetworkReachability интерфейсы. Ищите в документах SCNetworkReachability, и есть другие SO вопросы, которые ссылаются на это. По сути, вы можете использовать API Reachability для постоянного обновления флага, который вы можете проверить, чтобы узнать, есть ли у вас сетевое соединение.

0 голосов
/ 31 августа 2011

Я не думаю, что есть API, чтобы проверить это, но вы всегда можете позвонить одному из API, который будет возвращать результаты, например, получить списки лидеров.Если вы не подключены, произойдет сбой.

...