Ответ 1
Для меня проблема заключалась в том, что достижение разблокировалось, но не отображалось. Я не знаю, как не отображать сообщение, но он безвреден.
Недавно я решил добавить достижения в игру, которая была в 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.
Для меня проблема заключалась в том, что достижение разблокировалось, но не отображалось. Я не знаю, как не отображать сообщение, но он безвреден.
Я столкнулся с той же проблемой. Осторожно пройдя через мой код в моем отладчике, я пришел к выводу, что если я использую GKScore вместо GKAchievement, предупреждающее сообщение исчезнет. Правило большого пальца - это проверка ваших достижений и лидеров. Пойдите с GKScore вместо GKAchievement.
[ GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
if ( error != 0 )
NSLog( @"Reporting of %@ failed: %@", achievement, [ error localizedDescription ] );
}];
Я получил такое же сообщение об ошибке, когда случайно пытался сообщить о достижении в моем приложении, которое не было настроено в iTunes Connect.
Итак, следующие шаги могут помочь вам: