Использование Swift 4+, iOS 11+, Xcode 10 +
Я создал музыкальный проигрыватель, используя MPMediaPlayer, и я могу взаимодействовать с ним из командного центра, однако я хотел бы также видеть его на экране блокировки.
Если честно, меня немного смущает вопрос, почему он показывает / работает в командном центре, поскольку я не написал никакого кода для этого.
Тем не менее, я также хотел бы, чтобы это отображалось на экране блокировки.
Это то, что я сделал до сих пор:
1) Я использую приложение MusicPlayer и убедился, что во время моих тестов что-то играет:
MPMusicPlayerController.applicationMusicPlayer
2) Настройте фоновые режимы на включение звуковых, выборочных и удаленных уведомлений.
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) Я знаю, что не реализовал ничего, чтобы активно обновлять информацию или отвечать на какие-либо команды, так как сейчас я просто пытаюсь что-то показать на экране блокировки.
Почему воспроизводимая сейчас информация отображается в командном центре, если я ничего не сделал, чтобы поместить ее туда?
Что мне нужно сделать, чтобы информация отображалась на экране блокировки, как это делается в командном центре?
EDIT:
Ссылка на простой проект, который имеет ту же проблему на GitLab: https://gitlab.com/whoit/lockscreentest
РЕДАКТИРОВАТЬ: Я представил это как ошибку в Apple, однако они еще не подтвердили или не решили это.