Play local notification default sound when displaying UIAlertView?

nickpatrick picture nickpatrick · Jul 19, 2010 · Viewed 27.4k times · Source

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 notification isn't displayed. Instead, the didReceiveLocalNotification method is called in my app delegate, and I mimic the local notification dialog by displaying a UIAlertView with the reminder text.

When local notifications are displayed outside of the app, the device vibrates and the sound specified by UILocalNotificationDefaultSoundName is played. Again, I'd like to mimic this in the app when displaying the UIAlertView.

I can vibrate the device by calling AudioServicesPlaySystemSound(kSystemSoundID_Vibrate), but I can't figure out how to play the local notification default sound. There's no equivalent SystemSoundID constant, and I'm not sure what the path would be.

tl;dr I'd like to play the local notification default sound when displaying a UIAlertView. Any ideas?

Answer

Andrew Little picture Andrew Little · Aug 19, 2010

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!