JSQSystemSoundPlayer
A fancy Obj-C wrapper for Cocoa System Sound Services, for iOS and OS X.
About
This library is a light-weight component to play sound effects in your app. To determine your audio needs, see Best Practices for iOS Audio.
tl;dr
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 library is not for you! See AVAudioPlayer, instead.
Usage
JSQSystemSoundPlayer *sharedPlayer = [JSQSystemSoundPlayer sharedPlayer];
// Play a built-in sound
[sharedPlayer playSoundWithSoundID:1000 // new mail sound
asAlert:YES
completion:^{
NSLog(@"Sound finished playing. Executing completion block...");
}];
// Play a sound from a file
[sharedPlayer playSoundWithFilename:@"Basso"
fileExtension:kJSQSystemSoundTypeAIF
completion:^{
NSLog(@"Sound finished playing. Executing completion block...");
}];
Features
- 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 - Efficient memory management
- Caches sounds (
SystemSoundID
instances) and purges on memory warning - Works with Swift!
Requirements
- Xcode 9+
- iOS 9.0+
- tvOS 9.0+
- macOS 10.10+
Installation
CocoaPods (recommended)
pod 'JSQSystemSoundPlayer'
Carthage
github "jessesquires/JSQSystemSoundPlayer"
Documentation
Read the docs. Generated with jazzy. Hosted by GitHub Pages.
Generate
$ ./build_docs.sh
Preview
$ open index.html -a Safari
Contributing
Interested in making contributions to this project? Please review the guides below.
Also, consider sponsoring this project or buying my apps! :v:
Credits
Created and maintained by @jesse_squires.
License
JSQSystemSoundPlayer
is released under an MIT License. See LICENSE
for details.
Copyright © 2013-present Jesse Squires.
Please provide attribution, it is greatly appreciated.