I\'m writing a reminders app for iPhone that displays reminders using local notifications.
If a reminder goes off while the application is running, the local notific
This is addition to Andrew Little answer.
To better mimic notification sound, you also should to configure audio session:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionDuckOthers error:nil];
This is essential when e.g. you listen to the music and obtain notification during this.
Parameters of session above looks the same as for sound played when notification fires with application in background:
Good question. Ideally, there would be a way of selecting a system sound using AudioServices. However, the following statement from Apple's "System Sound Services Reference" suggests otherwise:
In Mac OS X, when a user has configured System Preferences to flash the screen for alerts, or if sound cannot be rendered, calling this function will result in the screen flashing. In Mac OS X, pass the constant kSystemSoundID_UserPreferredAlert to play the alert sound selected by the user in System Preferences. In iOS there is no preferred user alert sound.
Since it seems like the SDK has little to offer, you might wish to mimick the system sounds by using your own wav file. There is a nice library at the following link, perhaps it will have the sound you're looking for: http://sites.google.com/site/iphonesounds/iPhoneOriginalSystemSounds_WAV.zip
Good luck!
Set delegate in .h file:
@interface ViewController : UIViewController <UIAlertViewDelegate>
{
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
And set method that above declared.
And in .m file do this:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/ma.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex==0) {
[audioPlayer stop];
}
NSLog(@"U HAVE CLICKED BUTTON");
}
You can play the default notification sound in this way:
AudioServicesPlaySystemSound(1315);
Here you'll find the list of the ids you can use as parameter of AudioServicesPlaySystemSound(id).
Good coding!