Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting sounds for local notifications on a 3G iPhone running iOS4

I have successfully scheduled local notifications in my app using the code below:

Class cls = NSClassFromString(@"UILocalNotification");

    if (cls != nil) {

        UILocalNotification *notification = [[cls alloc] init];
        notification.fireDate = self.alarmNotificationDate;
        notification.timeZone = [NSTimeZone defaultTimeZone];

        notification.alertBody = @"Alarm is due";
        notification.alertAction = @"Show Alarm";

        notification.soundName = @"alarm.mp3";

        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
        [notification release];

Where self.alarmNotificationDate is a NSDate assign in another method.

All works fine in the simulator, but when I test on my trusted old iPhone 3G running iOS4 I get the notification, but only with the default sound.

I have tried with different sound files but no success.

Any clue why it could be like this and how to correct it?

Thanks

like image 941
Structurer Avatar asked Jan 22 '23 10:01

Structurer


2 Answers

UILocalNotification does not support mp3. It only supports the formats and containers mentioned on the reference page.

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html

Because custom alert sounds are played by the iOS system-sound facility, they must be in one of the following audio data formats:

  Linear PCM
  MA4 (IMA/ADPCM)
  µLaw
  aLaw

You can package the audio data in an aiff, wav, or caf file.

like image 75
Jonny Avatar answered Feb 05 '23 04:02

Jonny


There could be a couple of reasons:

  1. Is your sound file included in your bundle? (most likely, seeing as it works on the simulator)
  2. The Apple documentation says to not use compressed audio formats. See the link here. The reason for this being that the iPhone hardware can only play one compressed audio file at a time, and so it is not recommended to use one for the alarm as well, in case the user is already listening to a song from iTunes.
like image 42
Itay Avatar answered Feb 05 '23 02:02

Itay