使用 Swift 4+、iOS 11+、Xcode 10+
我已经使用 MPMediaPlayer 构建了一个音乐播放器,我可以从命令中心与它进行交互,但是我希望也能够在锁定屏幕上看到它。
老实说,我对它为什么在命令中心显示/工作感到有点困惑,因为我没有编写任何代码来执行此操作。不过,我也希望它显示在锁定屏幕中。
这是我到目前为止所做的:
1)我正在使用 applicationMusicPlayer 并确定在我的测试期间正在播放一些东西:
MPMusicPlayerController.applicationMusicPlayer
2) 将 BackgroundModes 设置为包括音频、获取和远程通知
3)添加了 AVAudioSession 代码(它似乎没有做任何事情,因为我已经尝试过并尝试将其注释掉并没有发现任何区别):
let session = AVAudioSession.sharedInstance()
do {
// Configure the audio session for playback
try session.setCategory(AVAudioSessionCategoryPlayback,
mode: AVAudioSessionModeDefault,
options: [])
try session.setActive(true)
} catch let error as NSError {
print("Failed to set the audio session category and mode: \(error.localizedDescription)")
}
4)使用此基本代码查看是否可以仅使用一些基本的硬编码内容将其显示在锁定屏幕上:
let nowPlayingInfo: [String: Any] = [
MPMediaItemPropertyArtist: "Pink Floyd",
MPMediaItemPropertyTitle: "Wish You Were Here",
//MPMediaItemPropertyArtwork: mediaArtwork,
]
MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
UIApplication.shared.beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.shared()
5) 我知道我没有实施任何主动更新信息或响应任何命令的操作,因为此时我只是想在锁定屏幕上显示一些内容。
如果我没有做任何操作,为什么现在正在播放的信息显示在指挥中心?
我需要做什么才能让信息像在命令中心中一样显示在锁定屏幕上?
编辑:链接到在 GitLab 上有相同问题的简单项目:https ://gitlab.com/whoit/lockscreentest
编辑:我已将此作为错误提交给 Apple,但他们尚未确认或解决此问题。