为什么ios系统声音不能在模拟器中播放?
我正在尝试播放系统声音。 使用Xcode 6 Beta 4.这是代码:
func playKeyClick() { let filePath = NSBundle.mainBundle().pathForResource("Tock", ofType: "aiff") if NSFileManager.defaultManager().fileExistsAtPath(filePath) { println("file exists") } let fileURL = NSURL(fileURLWithPath: filePath) var soundID:SystemSoundID = 0 AudioServicesCreateSystemSoundID(fileURL, &soundID) AudioServicesPlaySystemSound(soundID) }
它在设备上工作正常,但不能在模拟器中播放。 我已经创建了一个测试应用程序除了播放这个声音之外什么都不做,所以我认为我没有做任何事情来阻止它。
模拟器从Safari应用程序播放声音确定,所以我假设它显示它能够从我的应用程序播放声音。
请注意,我还有其他两种用于播放声音的代码,这两种方式也适用于设备但不适用于模拟器。 我选择这个例子是为了简单。
编辑 – 将文件更改为资源包以避免混淆
我正在回答我自己的问题,以澄清我所学到的东西。 有三个问题阻止了我的原始代码工作。 注意我在模拟器上使用Xcode6 Beta4和iphone 5s。
1-我使用的“/System/Library/Audio/UISounds/Tone.caf”的原始文件路径在模拟器中不起作用,它仅在设备上有效。 通过向应用添加音频文件进行了更正。
2- 声音在iPhone模拟器中不起作用? 提供了适用于ios 7.1及更早版本的声音信息。 不知道在我使用ios8进行测试后,有几个建议中的哪一个有效。
3-因为在ios7上运行的相同代码在ios8上不起作用,我假设io8模拟器代码中存在错误(ios8设备工作正常)。 在我试图产生声音的三种方式中,只有一种不起作用:
AudioServicesPlaySystemSound() – 不起作用
AudioUnit输出 – 有效
AVAudioPlayer – 有效
因为您指定的路径中不存在文件。 要对此进行测试,请在本地保存声音文件并指定其代码路径(请参阅下文) –
let fileURL = NSURL(fileURLWithPath: "/Users//Desktop/yoursund.mp3")
- identifierForVendor在重新安装时更改
- 如何保持导航栏消失与MSMessagesViewController – > UIContainerView – > UINavigationController – > UITableViewController?
- 如何从ipad中的应用程序启动设置应用程序中的myapplication设置选项卡
- 在iOS开发中,如果使用Core Graphics和/或Quartz 2D,我怎样才能绘制出一个渐变的圆形,使其看起来像一个球体?
- 我怎样才能在Swift中获取值types或自定义结构的内存地址?
- 迅捷清除JSONcaching?
- 如何loggingliveStreamaudio并保存到Documents目录中,同时播放?
- iPhone应用程序可以在启动时启动吗?
- 将一组新数据写入Plist,而不是覆盖它