¿Cómo es posible que mi file de sonido corto .aif solo se reproduzca en el simulador de iOS y no en el dispositivo?

Estoy buscando reproducir un sonido en mi iPhone (iOS 6.1) dependiendo de los botones presionados.

Después de convertir a aif, caf, wav y formattings comprimidos, no pude get sonido en el dispositivo. Los volúmenes de sonido se han comprobado, el dispositivo se ha reiniciado, no se incluyen letras mayúsculas en los nombres de los files.

Leí muchos temas sobre este problema y no pude encontrar una solución adecuada, lo que significa que mi problema es más complejo o simplemente estúpido, seguramente simple y estúpido.

Aquí está mi código para reproducir el sonido:

// Plays sound of given filename - (void) playSound:(NSString*)name { SystemSoundID sound = [self createSoundID:name]; AudioServicesPlaySystemSound(sound); NSLog(@"file played: %@",name); } // Creates a playable sound out of filename -(SystemSoundID) createSoundID:(NSString*) name { NSString *path = [NSString stringWithFormat: @"%@/%@", [[NSBundle mainBundle] resourcePath], name]; NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO]; SystemSoundID soundID; AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID); return soundID; } 

Si el sonido funciona bien en un simulador, pero no en un dispositivo real, significa que debe activar la configuration de timbre y alerta de su dispositivo. También debe marcar el button de silencio, si está encendido o no.

El problema era que el método que llamaba playSound no se llamaba con un NSTimer. Parece que para que los sonidos se reproduzcan, deben ser llamados por el hilo principal de la aplicación (que parece legítimo …).

Así que modifiqué la aplicación para que el hilo principal llamara a esos sonidos y voilá, funcionaba también en el dispositivo. El código anterior era correcto.