在运行iOS4的3G iPhone上设置本地通知的声音

时间:2010-09-15 11:01:01

标签: iphone audio notifications

我已使用以下代码在我的应用中成功安排了本地通知:

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];

其中self.alarmNotificationDate是另一种方法中的NSDate赋值。

在模拟器中一切正常,但是当我在运行iOS4的可信赖的旧iPhone 3G上测试时,我收到通知,但只有默认声音。

我尝试过不同的声音文件但没有成功。

任何线索为什么它可能是这样以及如何纠正它?

由于

3 个答案:

答案 0 :(得分:6)

UILocalNotification不支持mp3。它仅支持参考页面上提到的格式和容器。

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

  

因为播放了自定义提醒声音   通过iOS系统声音设施,他们   必须是以下音频之一   数据格式:

  Linear PCM
  MA4 (IMA/ADPCM)
  µLaw
  aLaw
     

您可以将音频数据打包成   aiff,wav或caf文件。

答案 1 :(得分:3)

可能有几个原因:

  1. 您的声音文件是否包含在捆绑包中? (很有可能,因为它在模拟器上工作)
  2. Apple文档说不使用压缩音频格式。请参阅链接here。这样做的原因是iPhone硬件一次只能播放一个压缩音频文件,因此不建议使用一个用于警报,以防用户已经在收听iTunes中的歌曲。

答案 2 :(得分:0)

您是否在文件名和文件名中使用相同的大写/小写编码拼写声音名称?