A fancy Obj-C wrapper for iOS System Sound Services.
This class is a light-weight, drop-in component to play sound effects, or other short sounds in your iOS app. To determine your audio needs, see Best Practices for iOS Audio. Or, read the tl;dr version:
When your sole audio need is to play alerts and user-interface sound effects, use Core Audio’s System Sound Services.
Your sound files must be:
- No longer than 30 seconds in duration
- In linear PCM or IMA4 (IMA/ADPCM) format
- Packaged in a
.caf
,.aif
, or.wav
file
If this does not fit your needs, then this control is not for you! See AVAudioPlayer, instead.
- Play sound effects and alert sounds with a single line of code
- "Play" vibration (if available on device)
- Block-based completion handlers
- Integration with
NSUserDefaults
to globally toggle sound effects in your app - Sweet and efficient memory management
- Caches sounds (
SystemSoundID
objects) and purges on memory warning
- iOS 6.0+
- ARC
pod 'JSQSystemSoundPlayer'
Otherwise, drag the JSQSystemSoundPlayer/
folder to your project, and add AudioToolbox.framework
.
[[JSQSystemSoundPlayer sharedPlayer] playSoundWithName:@"mySoundFile"
extension:kJSQSystemSoundTypeAIF
completion:^{
// completion block code
}];
And that's all!
String constants for file extensions provided for you:
kJSQSystemSoundTypeCAF
kJSQSystemSoundTypeAIF
kJSQSystemSoundTypeAIFF
kJSQSystemSoundTypeWAV
Need a setting in your app's preferences to toggle sound effects on/off? JSQSystemSoundPlayer
can do that, too! There's no need to ever check the saved settings ([JSQSystemSoundPlayer sharedPlayer].on
) before you play a sound effect. Just play a sound like in the example above. JSQSystemSoundPlayer
respects whatever setting has been previously saved.
[[JSQSystemSoundPlayer sharedPlayer] toggleSoundPlayerOn:YES];
Also see the included demo project: SoundPlayerDemo.xcodeproj
For a good time:
while (1) {
[[JSQSystemSoundPlayer sharedPlayer] playVibrateSound];
}
Read the fucking docs, available here via @CocoaDocs.
Please follow these sweet contribution guidelines.
Support the development of this free, open-source library!
Donations made via Square Cash
Send $1 Just saying thanks!
Send $5 This control is great!
Send $10 This totally saved me time!
Created by @jesse_squires, a programming-motherfucker.
Many thanks to the contributors of this project.
JSQSystemSoundPlayer
is released under an MIT License. See LICENSE
for details.
Copyright © 2013 Jesse Squires.
Please provide attribution, it is greatly appreciated.