在 iOS 上关闭视图控制器后如何继续播放音频?
Posted
技术标签:
【中文标题】在 iOS 上关闭视图控制器后如何继续播放音频?【英文标题】:How to continue to play audio after view controller is dismissed on iOS? 【发布时间】:2016-05-19 08:50:10 【问题描述】:我在一个导航控制器中有两个视图控制器,我们可以从第一个视图控制器导航到第二个视图控制器。
音频播放代码在第二个视图控制器的 viewDidLoad 方法中,如下所示:
let url = NSBundle.mainBundle().URLForResource("audioName", withExtension: "mp3")
//player = AVAudioPlayer(contentsOfURL: url!)
do
player = try AVAudioPlayer(contentsOfURL: url!)
//player.play()
dispatch_async(dispatch_get_main_queue(),
self.player.play()
)
catch
print("play error")
我的问题是,当加载第二个视图控制器时,正在播放音频,但是当我关闭第二个视图控制器并返回到第一个视图控制器时,音频停止播放。
我直接尝试了 play() 方法和 dispatch_async(dispatch_get_main_queue()) 方法,但是当第二个视图控制器关闭时,音频无法继续播放。
另外,音频可以在Xcode模拟器的后台自动播放,不知道有什么方法可以自定义。
【问题讨论】:
创建一个共享视图,在其中添加您的代码,检查此github.com/willingheart/AZSoundManager 【参考方案1】:'player-AVAudioPlayer' 在 viewcontroller 2 中声明。因此,当 viewcontroller 2 被弹出时,它与 viewcontroller 一起被释放。
将您的“播放器-AVAudioPlayer”对象创建为单例对象并将其存储在您的 AppDelegate/会话数据中。现在,无论您需要在哪里播放音频,只需从那里访问该对象并播放它。这样,即使在 viewcontroller 2 弹出后,它也会继续播放。
【讨论】:
以上是关于在 iOS 上关闭视图控制器后如何继续播放音频?的主要内容,如果未能解决你的问题,请参考以下文章
关闭网页视图后,来自 Youtube 嵌入式视频的音频继续播放 - Flutter
(iOS) 音频播放器作为应用程序中所有父视图控制器上的子视图控制器
当我在我的应用程序中录制完整的音频时,如何在其他 iOS 应用程序中继续播放音乐? [关闭]