为什么我的UILocalNotification没有播放任何声音?

时间:2014-05-08 04:24:42

标签: ios objective-c uilocalnotification audio

这让我疯了,我相信我现在已经尝试了所有可能的方法,但我的手机仍然决定保持沉默。当我提出本地通知时,我只想让它播放任何声音。目前,我添加到我的应用包中的UILocalNotificationDefaultSoundName和自定义声音都不起作用。我写了一个简单的倒计时应用程序,在倒计时结束后使用presentLocalNotification:

- (void)showLocalNotification
{
   UILocalNotification *alarmNotification = [[UILocalNotification alloc] init];
   alarmNotification.alertBody = [NSString stringWithFormat:@"fired at: %@", [NSDate date]];
   alarmNotification.soundName = UILocalNotificationDefaultSoundName; 
   // alarmNotification.soundName = @"glass.aiff"; // "glass.aiff" is a file in my application bundle
   [[UIApplication sharedApplication] presentLocalNotificationNow:alarmNotification];
}

我还会在收到通知时显示UIAlertViewAppDelegate初始化和显示的内容:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
   UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"alert"  message:@"Local notification was received" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
   [alertView show];
}

收到本地通知并显示警报,在通知中心我还可以看到通知已被触发,只有声音无法正常工作...

我检查了关于堆栈溢出的每个类似问题,启用了我的所有声音设置,确保在应用的手机通知设置已启用后,我甚至收到了来自其他应用的推送通知我正在测试声音的播放位置......

我到底错过了我的手机什么都没发出声音?当我触发通知或收到通知时,是否必须导入一些框架或调用其他任何内容?

也许最简单的解决方案是,如果有人在发布通知时发布播放默认声音所需的代码的最小版本(尽管我相信我自己已经编写了最小版本 - 除了它没有工作)。

顺便说一下,我在真实设备和模拟器上都尝试了这个应用程序,但没有一个能够运行......

the notification center proves that all my local notifications are fired the alert proves that my app delegate receives the local notification

3 个答案:

答案 0 :(得分:9)

如果您的应用程序在通知触发时位于前台,则不会自动播放声音。如果您的应用当时处于后台,它将仅自动播放声音。

您的屏幕截图看起来您的应用程序可能在您尝试时在前台处于活动状态。

根据Apple的推送通知文档:

  

如果应用程序在系统发送通知时最重要且可见,则不会显示警报,没有图标标记,也不会播放声音。但是,如果应用程序委托实现它,则调用application:didReceiveLocalNotification :. UILocalNotification实例将传递给此方法,委托可以检查其属性或访问userInfo字典中的任何自定义数据。

如果您愿意,您可以使用AudioServicesPlaySystemSound()方法自行播放声音。

答案 1 :(得分:4)

如果应用处于有效状态,UINotification不播放声音,因为它没有意义,它假设您在应用处于活动状态时看到通知,但如果应用未运行则会播放声音或者,在后台通知用户已发出通知。

干杯。

答案 2 :(得分:1)

您必须使用 *.mp3 *.wav 格式。我花了很多时间,但我找到了解决方案。 我试过Get max Erlang Traffic (Col K) for each date where Region is North 但是没有用。

我希望它有效。

如何转换为* .caf格式?

1)打开终端

2)示例:

  

cd / Users / username / Desktop / FolderName

点击Enter

3)

  

afconvert -f caff -d LEI16 @ 22050 -c 1 BlaBla.mp3 BlaBlaNew.caf

点击Enter