【问题标题】:iOS background audio gets stopped when playback is finished播放完成后iOS背景音频停止
【发布时间】:2014-10-22 14:30:09
【问题描述】:

SOW 上已经有几个问题,关于 playing audio in background,但我的问题有点不同(据我所知!)

所以我的应用中有一个播放列表,用户可以在其中选择循环播放音频,或者随机/连续播放应用中所有可用的音频。

使用下面的代码,以及所需的 Info.plist 设置:

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

Info.plist 设置:

<key>UIBackgroundModes</key> <array> <string>audio</string> </array>

音频在后台正常工作,甚至在屏幕锁定时也能正常工作,但是当音频播放完成时就会出现问题。 使用 NSLogs,我可以看到代码再次到达 AudioPlayer 的“播放”方法,但音频没有播放下一首歌曲,也没有播放要在循环中播放的歌曲。

有人指点吗?

【问题讨论】:

    标签: ios audio avaudioplayer avaudiosession


    【解决方案1】:

    阅读documentation,相关段落:

    我的音频存储在本地应用程序中。 当 UIBackgroundModes 键包含音频值时,系统的媒体框架会自动阻止相应的应用程序在移动到后台时被挂起。 只要是播放音频或视频内容或录制音频内容,应用程序就会继续在后台运行。

    但是,如果录制或播放停止,系统会暂停应用。

    所以本质上,为了破解设置,我使用了两个 AVAudioPlayer,而不是等待 audioPlayerDidFinishPlaying: 的委托回调,我解决了这个问题:

    if ((audioPlayer1.duration - audioPlayer1.currentTime)

     //play Audio 2
    

    }

    不太确定是否有比这更好的建议?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      相关资源
      最近更新 更多