Я следил за несколькими учебниками & Документация Apple по аутентификации локального игрока для функциональности Game Center с использованием Objective C. В настоящее время наша бета-версия имеет функциональную аутентификацию Game Center для лидеров. Однако, похоже, что что-то не так с аутентификацией для достижений, потому что ни одно из наших достижений не выходит из iTunes Connect. Из ViewController.m, первая аутентификация происходит, как показано ниже:Успешная и неудачная проверка подлинности Game Center (iOS 7, Objective C)
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(showAuthenticationViewController)
name:PresentAuthenticationViewController
object:nil];
[[GameKitHelper sharedGameKitHelper] authenticateLocalPlayer];
}
- (void)showAuthenticationViewController
{
GameKitHelper *gameKitHelper = [GameKitHelper sharedGameKitHelper];
UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: gameKitHelper.authenticationViewController animated:YES completion:nil]; }
В GameKitHelper, следующий этап аутентификации происходит:
- (void)authenticateLocalPlayer
{
//1
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
//3
[self setLastError:error];
if(viewController != nil) {
//4
[self setAuthenticationViewController:viewController];
} else if([GKLocalPlayer localPlayer].isAuthenticated) {
//5
_enableGameCenter = YES;
NSLog(@"Successful");
} else {
//6
_enableGameCenter = NO;
NSLog(@"Failure");
}
};
}
При загрузке достижений, используется следующая функция:
-(void)achievementLoad {
if (_enableGameCenter) {
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
if (error != nil) {
NSLog(@"Error in loading achievements.");
}
if (achievements != nil) {
//Process achievements.
for (GKAchievement *temp in achievements) {
//temp
[[GameKitHelper sharedGameKitHelper].achievementsDictionary setObject:temp forKey:temp.identifier];
//[_achievementsDictionary setObject:temp forKey:temp.identifier];
}
NSLog(@"Achievements Retrievemented");
}
}];
} else {
NSLog(@"Achievements not loaded");
}
}
При попытке получить достижения игра всегда будет сообщать «Код ошибки 6: Игрок не аутентифицирован» (ошибка! = Nil - это правда). Затем, когда я пытаюсь использовать словарь достижений, он устанавливается как ноль, что не имеет смысла.
У меня есть информация iTunes Connect, активная для Game Center, и я вошел в систему с помощью учетной записи sandbox. Есть ли что-то еще, что я делаю неправильно?
Любая помощь будет высоко оценена. Благодаря!