Я создаю музыкальный плеер (в Swift 3), который использует MPMediaItems и MPMediaPlayerController. Я не могу на всю жизнь понять, как управлять музыкой из экрана блокировки или центра уведомлений ...iOS Swift - MPCommandCenter & NowPlayingInfoCenter Управление музыкой на экране блокировки
Я прочитал каждую статью, которую я могу найти в MPRemoteCommandCenter и MPNowPlayingInfoCenter, и я не могу заставить ее работать.
Я включил воспроизведение фоновой музыки, в настоящее время музыка продолжает играть за пределами приложения, но не получает удаленных команд.
Ниже приведен код, в настоящее время используется
На мой взгляд Знали нагрузки я называю следующую функцию
let player = MPMusicPlayerController.applicationMusicPlayer()
let commandCenter = MPRemoteCommandCenter.shared()
func configureCommandCenter() {
print("Enter configuration")
self.commandCenter.playCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
guard let sself = self else { return .commandFailed }
print("Play")
sself.player.play()
self?.getNowPlayingItem()
return .success
}
self.commandCenter.pauseCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
guard let sself = self else { return .commandFailed }
print("Pause")
sself.player.pause()
self?.getNowPlayingItem()
return .success
}
self.commandCenter.nextTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
guard let sself = self else { return .commandFailed }
print("next")
sself.player.skipToNextItem()
self?.getNowPlayingItem()
return .success
}
self.commandCenter.previousTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
guard let sself = self else { return .commandFailed }
print("Prev")
sself.player.skipToPreviousItem()
self?.getNowPlayingItem()
return .success
}
}
Повторим мой проект компилируется нормально, играет СМИ, продолжает играть средства массовой информации, когда приложение не фокус и когда телефон заблокирован, однако из приложения не видно никаких команд, что приводит к тому, что приложение не может контролироваться с экрана блокировки или центра уведомлений. Любая помощь будет принята с благодарностью.
Я также хотел бы упомянуть, что я просмотрел документы API Apple, относящиеся как к RemoteCommands, так и к InfoCenter.
Я пропустил какой-то ключевой шаг, чтобы получить удаленные команды, зарегистрированные из приложения?
Не имеет значения, но вы должны удалить свой 'viewDidAppear'. Это не имеет значения. Вы комбинируете старый метод pre-MPRemoteCommandCenter с новым способом MPRemoteCommandCenter. Нет смысла делать это. – matt
Это две соответствующие функции, которые я использую в настоящее время для персонажа ... и они действительно компилируются, можете ли вы подробнее рассказать о том, почему вы думаете, что они не будут? Возможно, это часть того, почему я не получаю команды? – Jerland2
@matt, спасибо Я сниму функцию, о которой я не знал, что был старый и новый способ, это мой первый опыт работы с этими библиотеками. – Jerland2