gpt4 book ai didi

ios - 在 iOS 中控制应用程序之外的音频

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:29 24 4
gpt4 key购买 nike

我正在尝试从应用程序外部控制我的音频播放器,我开始了一个 av Audio Session ,但它没有在后台播放(在 swift 3 上运行良好),

        do{


myPlayer = AVPlayer(url: url!)

let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback
)
do {
try audioSession.setActive(true)

}

}
catch {
print(error)
}
}

我的主要目标是像这样控制播放和暂停: enter image description here

最佳答案

因此,您正在构建一个使用 AVPlayer 在后台播放音频的应用。您应该使用 MPNowPlayingInfoCenter 在锁屏和控制中心上显示歌曲的元数据,并使用 MPRemoteCommandCenter 控制锁屏上的上一个/下一个/播放/暂停操作和控制中心。

  • 音频、AirPlay 和图片启用背景模式在您的目标>能力中描绘
  • 如果您正在从网络流式传输音频,请同时为Background Fetch 启用后台模式。

Background Mode for Audio

  • 导入 AVKitMediaPlayer 依赖项。

使用 AVPlayerItem 设置您的 AVPlayer:

guard let url = URL(string: "http://your.website.com/playlist.m3u8") else {
return
}
player = AVPlayer(url: url)

设置你的AVAudioSession:

private func setupAVAudioSession() {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
debugPrint("AVAudioSession is Active and Category Playback is set")
UIApplication.shared.beginReceivingRemoteControlEvents()
setupCommandCenter()
} catch {
debugPrint("Error: \(error)")
}
}

设置信息中心RemoteCommandCenter:

private func setupCommandCenter() {
MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyTitle: "Your App Name"]

let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.pauseCommand.isEnabled = true
commandCenter.playCommand.addTarget { [weak self] (event) -> MPRemoteCommandHandlerStatus in
self?.player.play()
return .success
}
commandCenter.pauseCommand.addTarget { [weak self] (event) -> MPRemoteCommandHandlerStatus in
self?.player.pause()
return .success
}
}

您可以将 setupAVAudioSession() 方法放在您的 viewDidLoad() 方法中,或者您需要的任何其他地方。

如果您需要在 MPNowPlayingInfoCenter 中放置更多信息,这里是所有可用属性的列表:General Media Item Property Keys | Apple Developer Documentation

关于ios - 在 iOS 中控制应用程序之外的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com