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 に提出しましたが、まだ確認も解決もされていません。