为啥 AVAudioPlayer 不播放?

Posted

技术标签:

【中文标题】为啥 AVAudioPlayer 不播放?【英文标题】:Why does AVAudioPlayer does not play?为什么 AVAudioPlayer 不播放? 【发布时间】:2016-04-13 15:46:36 【问题描述】:

我们开发了这个 iOS 场景:

1) ios App 安排本地推送通知 2) Push 是启动 AVAudioPlayer 音频播放的触发器 - 即使 iPhone 被锁定(后台应用程序)

现在有两种情况:

a) 推送调度时差超过3小时: 解锁并启动应用后,音频确实开始播放

b) 推送调度时间差小于3小时: 即使没有解锁,音频也会开始播放

我们希望 case b 作为默认情况。 iOS 会在几个小时后停止/冻结我们的应用程序吗?有趣:在印度设备上似乎没有 case a - 即使时差超过 12 小时。

有什么想法吗? 非常感谢!

【问题讨论】:

【参考方案1】:

您是否集成了后台执行?否则应用会在一段时间后暂停。

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

【讨论】:

【参考方案2】:

一旦在 appdelegate 中触发了 didReceiveLocalNotification 方法,然后在 appdelegate 或全局中触发一个方法,然后使用下面的代码在后台或设备锁定中使用 AVAudioPlayer 播放音频文件

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@“filename”
                                                          ofType:@“type”];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL
                                                error:nil];

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


player.numberOfLoops = -1; //Infinite

[player prepareToPlay];

[player play];

【讨论】:

以上是关于为啥 AVAudioPlayer 不播放?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 AVAudioPlayer 不播放声音?

为啥 AVAudioPlayer 没有响应?

AVAudioPlayer 15 次不播放音频

在新的 iOS 版本中,AVAudioPlayer 数组出现错误的访问错误,但为啥

AVAudioPlayer 不播放 mp3?

AVAudiorecorder 和 AVAudioPlayer 并不总是播放声音