Я использую эту библиотеку, чтобы сообщить результаты и достижение в моем приложении: https://github.com/csddavies/DDGameKitHelperGKAchievement разблокирован слишком рано?
Так что в моем приложении я сообщаю проценты, чтобы пользователь мог знать, насколько они близки к завершению достижения. Так что я сделать что-то вроде этого:
[[DDGameKitHelper sharedGameKitHelper] reportAchievement:@"Achievement1" percentComplete:totalTime/300.0f];
Однако, как представляется, сообщив, что я закончил достижение «Achievement1», несмотря на то, что я не сделал. Когда я NSLog totalTime/300.0f
, я получаю значение, подобное . 0,563 и NOT .
Так что теперь я думаю, что что-то должно быть неправильно с методом reportAchievement
, поэтому я посмотрел на него, и я не уверен, что может быть неправильным. Вот методы, связанные с reportAchievement
:
-(void) reportAchievement:(NSString*)identifier percentComplete:(float)percent
{
if (isGameCenterAvailable == NO)
return;
GKAchievement* achievement = [self getAchievement:identifier];
if (achievement.percentComplete < percent)
{
NSLog(@"new achievement %@ reported", achievement.identifier);
achievement.percentComplete = percent;
[achievement reportAchievementWithCompletionHandler:^(NSError* error)
{
[delegate onReportAchievement:(GKAchievement*)achievement];
}];
[self saveAchievements];
}
}
-(GKAchievement*) getAchievement:(NSString*)identifier
{
GKAchievement* achievement = [achievements objectForKey:identifier];
if (achievement == nil)
{
achievement = [[[GKAchievement alloc] initWithIdentifier:identifier] autorelease];
[achievements setObject:achievement forKey:achievement.identifier];
}
return achievement;
}
Так что-нибудь здесь, что может привести к моим достижениям должны представляться как завершено в начале, даже если они на самом деле нет?
Спасибо!
Edit1:
2012-11-19 20:50:15.946 App[16894:907] percent: 0.005556
2012-11-19 20:50:15.947 App[16894:907] achievement percentComplete: 0.004861
2012-11-19 20:50:15.972 App[16894:907] percent: 0.000000
2012-11-19 20:50:15.973 App[16894:907] achievement percentComplete: 0.000000
2012-11-19 20:50:15.974 App[16894:907] percent: 0.026000
2012-11-19 20:50:15.974 App[16894:907] achievement percentComplete: 0.024000
2012-11-19 20:50:16.003 App[16894:907] percent: 0.002600
2012-11-19 20:50:16.004 App[16894:907] achievement percentComplete: 0.002400
2012-11-19 20:50:16.010 App[16894:907] percent: 0.000000
2012-11-19 20:50:16.011 App[16894:907] achievement percentComplete: 0.000000
2012-11-19 20:50:16.012 App[16894:907] percent: 0.016667
2012-11-19 20:50:16.012 App[16894:907] achievement percentComplete: 0.016667
2012-11-19 20:50:16.013 App[16894:907] percent: 0.000000
2012-11-19 20:50:16.014 App[16894:907] achievement percentComplete: 0.000000
Попробуйте добавить NSLog для получения значения «процента». И обновите вопрос – CReaTuS
Хорошо, я добавил его, так как вы можете видеть, что некоторые проценты всегда равны 0,00000 по какой-то нечетной причине. Теперь также есть 3 0,000000 номеров, что имеет смысл, потому что одни и те же 3 достижения постоянно появляются каждый раз, когда я сообщаю им. –