Create a singleton class to make playing audio extremely within an iOS app simpler.
This code is available under the MIT license.
- Drag files from the Classes folder to your project;
- Add AudioToolbox and AVFoundation frameworks;
- #import "SHSoundPlay.h" wherever you want to use it.
Here's how you initialize and play a "short sound" (30s or shorter .caf, .air or .wav snippets):
[SHSoundPlay addSoundAtPath:[[NSBundle mainBundle] pathForResource:@"ding.wav" ofType:nil] forKey:@"ding"];
[SHSoundPlay playSoundForKey:@"ding"];
For longer AAC, MP3 and ALAC (Apple Lossless) audio, use:
[SHSoundPlay addAudioAtPath:[[NSBundle mainBundle] pathForResource:@"play.mp3" ofType:nil] forKey:@"play"];
[SHSoundPlay playAudioForKey:@"play"];
For a nice fede in effect, you can use
[SHSoundPlay playAudioForKey:@"play" fadeInInterval:2.0];
Similar metods are available for stopping and pausing the audio:
+ (void)stopAudioForKey:(id)key fadeOutInterval:(NSTimeInterval)fadeOutInterval;
+ (void)stopAudioForKey:(id)key;
+ (void)pauseAudioForKey:(id)key fadeOutInterval:(NSTimeInterval)fadeOutInterval;
+ (void)pauseAudioForKey:(id)key;
For longer audio, this class uses AVAudioPlayer and, if you need to set volume, number of loops and so on, you can get access to the underlying player by calling:
AVAudioPlayer *player = [SHSoundPlay audioPlayerForKey:@"play"];
player.numberOfLoops = -1; // Endless looping