Проблемы с достижением Game Center

Недавно я решил добавить достижения в игру, которая была в App Store уже много лет, и у меня возникают проблемы с их работой.

Я использую следующий код для публикации достижений:

GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: identifier];

[achievement setPercentComplete:100.0];

[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error){

}];

Но reportAchievements просто регистрируется no bundle for bundleID: (null).

Мне интересно, связано ли это с тем, что достижения еще не живут, и Apple удалила серверы песочницы. Но они зарегистрированы в iTunes Connect, и я использую Test User.

Также важно отметить, что это приложение было передано от другого разработчика.

Для идентификатора приложения я попытался использовать:

  • com.olddeveloper.ach_id
  • com.olddeveloper.appid.ach_id
  • ach_id
  • com.newdeveloper.ach_id
  • com.newdeveloper.appid.ach_id

Лидер, который присутствует с момента передачи, все еще работает, и он использует старый идентификатор разработчика.

Я даже попробовал просто получить список всех достижений, используя код в первом ответе здесь, но он все еще говорит no bundle for bundleID: (null).

EDIT:

Я обнаружил, что даже если он говорит no bundle for bundleID: (null), он все равно правильно возвращает список всех достижений. Я предполагаю, что это сообщение - это просто сбой в системе и что он все равно работает.

Тем не менее, я все еще не могу разблокировать достижения, используя любую комбинацию ID.

Ответы

Ответ 1

Для меня проблема заключалась в том, что достижение разблокировалось, но не отображалось. Я не знаю, как не отображать сообщение, но он безвреден.

Ответ 2

Я столкнулся с той же проблемой. Осторожно пройдя через мой код в моем отладчике, я пришел к выводу, что если я использую GKScore вместо GKAchievement, предупреждающее сообщение исчезнет. Правило большого пальца - это проверка ваших достижений и лидеров. Пойдите с GKScore вместо GKAchievement.

[ GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
    if ( error != 0 )
        NSLog( @"Reporting of %@ failed: %@", achievement, [ error localizedDescription ] );
}];

Ответ 3

Я получил такое же сообщение об ошибке, когда случайно пытался сообщить о достижении в моем приложении, которое не было настроено в iTunes Connect.

Итак, следующие шаги могут помочь вам:

  • Проверьте iTunes Connect на отсутствие достижений
  • Проверьте свои достижения для орфографических ошибок.