我在锁定屏幕(iOS 11.2)上显示播放器控件存在问题。我已经完成的工作如下:
在AppDelegate.swift中我初始化了AVAudioSession:
import MediaPlayer
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.beginReceivingRemoteControlEvents()
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
} catch {
}
return true
}
}
然后我的应用程序包含一个包含多个视图的TabHostController。其中一个是音频选项卡。在那里,我尝试处理远程按钮:
import UIKit
import Foundation
import MediaPlayer
class AudioTabViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioPlayClicked()
return .success
}
commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioPauseClicked()
return .success
}
commandCenter.stopCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioStopClicked()
return .success
}
}
}
最后我将背景模式添加到Info.plist:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
会发生什么?我可以毫无问题地构建项目并在iPhone 8上运行。我的音乐播放
但锁定屏幕上没有音频控件(屏幕为空)
如果我查看iOS控制中心,然后我找到一些音频控件,但是点击那里的播放按钮,只播放Apple的音乐应用程序,我之前使用过它。
所以我认为我的应用程序不是系统范围内的#34;已注册&#34;作为当前的音频播放器。
答案 0 :(得分:4)
我不知道你解决了这个问题,但也许有人有问题,这篇文章可以帮助他们。
我有同样的问题和
我终于找到了问题,
当我设置AVAudioSession时,我正在使用此行 - &gt; 试试
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers)
一旦我将该行更改为以下内容,锁定屏幕控件显示并正常工作 - &gt;
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
所以我猜问题是传递AVAudioSessionCategoryPlaybackOptions的参数。我尝试传入.duckOthers和.mixWithOthers,在这两种情况下都会导致锁定屏幕控件根本无法显示