До сих пор я успешно реализовывал 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?
Приветствия