Me he quedado perplejo en esto por mucho time. Entiendo cómo desbloquear un logro en Game Center e incluso tengo todo un sistema de postría funcionando. Pero no puedo determinar cómo verificar si un logro ya se ha desbloqueado 🙁
Aparentemente esto no funciona:
GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; NSLog(@"%i",achievement.completed);
Siempre traza "0".
Desbloquear un logro funciona:
GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; achievement.percentComplete = 100;
Entonces no es que haya cometido un error en todo el logro, es solo que GameKit no puede decirme si el logro ya se ha desbloqueado o no.
¡Estaría muy agradecido si alguien pudiera ayudarme con esto!
para cargar los logros previamente enviados para el usuario actualmente registrado, debe llamar a:
[GKAchievement loadAchievementsWithCompletionHandler: ^(NSArray *scores, NSError *error) { if(error != NULL) { /* error handling */ } for (GKAchievement* achievement in scores) { // work with achievement here, store it in your cache or smith } }];
Usted sabe que la mejor manera de comenzar con Game Center: los logros y los puntajes más altos es echar un vistazo al proyecto de demostración que Apple tiene en línea aquí: http://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction /Intro.html
Eche un vistazo al código: es lo suficientemente simple como para comprender rápidamente lo que está sucediendo y presenta el caching de logros locales, presentarse a diferentes tableros de líderes, etc., etc.
Estoy a punto de comenzar a implementar esto yo mismo.
Por lo que leí de los documentos, lo que creo que debes hacer es llamar
loadAchievementsWithCompletionHandler: