2012-08-01 10 views
6

Configuré un logro para pasar el primer nivel de mi juego y funciona, pero cuando vuelvo a jugar el nivel y lo paso muestra el aviso de notificación nuevamente, ¿cómo puedo evitar que esto suceda?Logro del logro Game Center desbloqueando varias veces

+0

Tome un vistazo a [esta] (http://stackoverflow.com/questions/4768163/check-if-youve-already-unlocked-an- Pregunta: suena como si no estuvieras comprobando si los logros ya se desbloquearon. – thegrinner

Respuesta

11

Utilice este método para presentar el logro:

-(void) reportAchievementWithID:(NSString*) achievementID { 

    [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) { 

     if(error) NSLog(@"error reporting ach"); 

     for (GKAchievement *ach in achievements) { 
      if([ach.identifier isEqualToString:achievementID]) { //already submitted 
       return ; 
      } 
     } 

     GKAchievement *achievementToSend = [[GKAchievement alloc] initWithIdentifier:achievementID]; 
     achievementToSend.percentComplete = 100; 
     achievementToSend.showsCompletionBanner = YES; 
     [achievementToSend reportAchievementWithCompletionHandler:NULL]; 

    }]; 

} 
+0

Señor, me salvaste el día –

-2

Guarde que el usuario ha pasado el nivel a NSUserDefaults, luego cuando el usuario pasa el control de nivel NSUserDefaults para su clave, si está allí, entonces no haga el código de logro para Game Center.

+0

Eso funciona en cierta medida. Descubrí que si completaba el logro y luego salía del centro de juegos e iniciaba sesión en una cuenta que no permitía completar el logro, era imposible ganar para el nuevo jugador :( –

+0

puede almacenarlo con alias del jugador, pero usando loadAchievementsWithCompletionHandler es mejor. – erkanyildiz

Cuestiones relacionadas