Ios 为什么';我的手机不能播放任何声音吗?

Ios 为什么';我的手机不能播放任何声音吗?,ios,objective-c,uilocalnotification,audio,Ios,Objective C,Uilocalnotification,Audio,这让我发疯,我相信我已经尝试了所有可能的方法,但我的手机仍然决定保持沉默。我只是希望它在我发布本地通知时播放任何声音。目前,我添加到我的应用程序包中的UILocalNotificationDefaultSoundName和自定义声音都不起作用。我编写了一个简单的倒计时应用程序,在倒计时结束时使用presentLocalNotification: - (void)showLocalNotification { UILocalNotification *alarmNotification =

这让我发疯,我相信我已经尝试了所有可能的方法,但我的手机仍然决定保持沉默。我只是希望它在我发布本地通知时播放任何声音。目前,我添加到我的应用程序包中的
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];
}
我还显示了一个
UIAlertView
,当收到通知时,该视图将从
AppDelegate
初始化并显示:

- (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];
}
收到本地通知并显示警报,在通知中心我还可以看到通知已被触发,只是声音不起作用

我检查了堆栈溢出的每一个类似问题,启用了我的所有声音设置,确保在手机的设置中,应用程序的通知已启用,我甚至在测试声音在何处播放时收到了来自其他应用程序的推送通知

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

也许最简单的解决方案是,如果有人发布一个最小版本的代码,在出现通知时播放默认声音(尽管我相信我自己已经编写了这个最小版本,但它不起作用)

顺便说一句,我在真实设备和模拟器上都试过这个应用程序,但都不起作用


如果您的应用程序在发出通知时处于前台,则不会自动播放声音。只有当你的应用程序当时在后台时,它才会自动播放声音

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

根据苹果的推送通知文档:

如果系统发送通知时应用程序处于最前面且可见状态,则不会显示警报、不会标记图标,也不会播放声音。但是,如果应用程序委托实现了application:didReceiveLocalNotification,则会调用它。UILocalNotification实例被传递到此方法中,委托可以检查其属性或从userInfo字典访问任何自定义数据


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

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


干杯。

您必须使用
*.caf
格式。我花了很多时间,但我找到了解决办法。 我尝试了
*.mp3*.wav
,但不起作用

我希望它能起作用

如何转换为*.caf格式?

1) 开放式终端

2) 示例:

cd/Users/username/Desktop/FolderName

单击输入

(三)

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


单击Enter

这是否与我在iOS7上运行并使用Xcode 5有关。我找到的几乎所有教程都是iOS6及更老版本。。。这对我来说毫无意义,但谁知道呢……你有没有试着把你的应用程序放在后台?我猜如果你的应用程序处于活动状态,声音就不会播放。嗯,我开始安排通知,这些通知会在几秒钟内发出,但后来改用
presentLocalNotification:
来获得更多控制。不过,我现在就要试试这个,谢谢你的提示。它奏效了!!它播放默认的以及自定义的声音!!!非常感谢!如果您将此添加为答案,我会将其标记为我的问题的解决方案,并给您另一票:)是的,我加了我的答案。。