This is a continuation of the iOS Multitasking series. Along with notifications (as discussed last week), iOS Multitasking also provides a feature called Background Audio. As the name suggests, this feature enables applications to play audio even when the application is in the background, similar to how the iPod or Music Application bundled with the device works.
In this tutorial we will be covering playing a sound in the background, not how to record audio in the background. To demonstrate we will be making a simple noise maker and give it the ability to play in the background.
Step 1: Setting Up the Project
First create a new project and call it NoiseMaker (or some other name) as a View-Based Application with the default settings.
Once the project has been created go to NoiseMaker-Info.plist and add UIBackgroundModes as a new row. It should then create the array.
Open the array and to the right of Item 0 set it to audio. Your NoiseMaker-Info.plist should look like this:
Now go to the target settings and go to the tab labeled Build Phases.
When you've finished the last sub-step go to Link Binary With Libraries and add the AVFoundation framework.
In the Spotlight Search on your Mac for the file HeadSpin Long.caf. Find the file and rename it so the space is deleted.
Drag the file into Xcode under the NoiseMaker Directory. Make sure Copy Resources into Destinations Folder is checked.
Step 2: Setting Up the User Interface
In the NoiseMaker Directory select the NoiseMakerViewController.h file and add the following code under the #import declaration.
#import
Now add the following code under the @interface declaration.
IBOutlet UIButton *playPauseButton; //Toggles the playback state IBOutlet UISlider *volumeControl; //Sets the volume for the audio player IBOutlet UILabel *alertLabel; //The alert label showing the status of the loading of the file AVAudioPlayer *audioPlayer; //Plays the audio