Использование Swift 4+, iOS 11+, Xcode 10+
Я создал музыкальный проигрыватель с помощью MPMediaPlayer и могу взаимодействовать с ним из Центра управления, однако я хотел бы также видеть его на экране блокировки.
Честно говоря, я немного смущен тем, почему он отображается/работает в Центре управления, поскольку я не написал для этого никакого кода. Тем не менее, я также хотел бы, чтобы он отображался на экране блокировки.
Вот что я сделал до сих пор:
1) Я использую приложение MusicPlayer и убедился, что во время моих тестов что-то играет:
MPMusicPlayerController.applicationMusicPlayer
2) Установите BackgroundModes, чтобы включить Audio, Fetch и Remote Notifications.
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, однако они еще не подтвердили или не решили это.
MPNowPlayingInfoCenter.default().setValuesForKeys(nowPlayingInfo)
вместоMPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
? - person Arash Etemad   schedule 17.02.2019.applicationMusicPlayer
? вы можете показать информацию о песне, используя.systemMusicPlayer
, но я думаю, что он обрабатывает информацию автоматически. - person Arash Etemad   schedule 18.02.2019