AuthenticateWithCompletionHandler: устарел: сначала устарел в iOS 6.0

Я работаю над игрой, которая использует Game Center, и я получаю следующее предупреждение;

... 'authenticateWithCompletionHandler:' устарел: сначала устарел в iOS 6.0

Хорошо, я искал и узнал, что есть новый код для аутентификации Local User, поэтому я заменил

старый код:

- (void)authenticateLocalUser {
 if (!gameCenterAvailable) return;
 NSLog(@"Authenticating local user...");
 if ([GKLocalPlayer localPlayer].authenticated == NO) {
 [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];
 } else {
 NSLog(@"Already authenticated!");
 }
}

с новым:

- (void)authenticateLocalUser {
 if (!gameCenterAvailable) return;
 NSLog(@"Authenticating local user...");
 if ([GKLocalPlayer localPlayer].authenticated == NO) {
 GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
 [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
 //[localPlayer authenticateWithCompletionHandler:^(NSError *error) { OLD CODE!
 if(localPlayer.isAuthenticated) {
 //do some stuff
 }else {
 // not logged in 
 }
 })]; 
 } else {
 NSLog(@"Already authenticated!"); 
 } 
}

и все в порядке, кроме одного. Если пользователь не зарегистрирован, в нем нет формы входа в Game Center. Со старым кодом он показывает форму входа в Game Center, если пользователь не вошел в систему.

Есть ли какой-нибудь дополнительный код, который я должен добавить или что-то еще?

Дополнительная информация: - ландшафтный режим - цель развертывания: 6.0

1 ответ

Да, вам нужно вручную представить форму входа в систему iOS6, это дает вам больше контроля над представлением экрана. Попробуйте

localPlayer.authenticateHandler = ^(UIViewController *viewController,NSError *error) {
if (localPlayer.authenticated) { 
//already authenticated
} else if(viewController) {
[self presentViewController:viewController];//present the login form
} else {
//problem with authentication,probably bc the user doesn't use Game Center
} 
};

licensed under cc by-sa 3.0 with attribution.