2015-04-10 1 views
1

Я следил за несколькими учебниками & Документация 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. Есть ли что-то еще, что я делаю неправильно?

Любая помощь будет высоко оценена. Благодаря!

ответ

0
  1. Убедитесь, что на developer.apple.com под идентификаторами проверьте свое приложение, подтвердите, что «Game Center включен».
  2. В Xcode убедитесь, что в вашей целевой настройке убедитесь, что включен Game Center Switch.
  3. Убедитесь, что вы используете GameKit.framework (Build Phases, Link Binary with Library).
  4. В iTunes Connect для вашего приложения убедитесь, что номера версий совпадают в вашем приложении и в iTunes connect.
  5. В iTunes Connect в вашей версии приложения (перед представлением) убедитесь, что кнопка Game Center включена для версии, и вы добавили Leaderboards/Achievements на экран версии приложения (нажмите +).
  6. Убедитесь, что ваше устройство iOS действительно зарегистрировано в Game Center (выйдите из системы и войдите в систему, чтобы убедиться).