Я работаю над приложением, которое воспроизводит звук в Apple Watch;Все работает нормально изнутри приложения.Я пытаюсь настроить MPRemoteCommandCenter
в «Now Playing», чтобы изменить следующий / предыдущий трек на skipForward / skipBackward и добавить обработчик для команды паузы.
Ничто не изменится в "Now Playing", и команда не запускает обработчик.
Ниже кода фрагмента:
Метод воспроизведения
var player: WKAudioFilePlayer!
@IBAction func play() {
let avSession = AVAudioSession.sharedInstance()
try! avSession.setCategory(.playback, mode: .default, policy: .longForm, options: [])
let url = Bundle.main.url(forResource: "sample", withExtension: "mp3")!
let item = WKAudioFilePlayerItem(asset: WKAudioFileAsset(url: url))
player = WKAudioFilePlayer(playerItem: item)
do {
try avSession.setActive(true, options: .notifyOthersOnDeactivation)
player.play()
} catch {
print("Error")
}
}
Метод настройки пульта ДУ:
func setupRemoteControls() {
// Get the shared MPRemoteCommandCenter
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value: 15)]
commandCenter.skipForwardCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
// skip forward
return .success
}
commandCenter.skipForwardCommand.isEnabled = true
commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value: 15)]
commandCenter.skipBackwardCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
// skip backword
return .success
}
commandCenter.skipBackwardCommand.isEnabled = true
// Add handler for play Command
commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.player.play()
return .success
}
// Add handler for Pause Command
commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.player.pause()
return .success
}
}
- Я звоню
self.setupRemoteControls()
в awake
методе.Также я попытался переместить настройку в ExtensionDelegate -> applicationDidFinishLaunching
Apple, ссылки, которые я использовал:
https://developer.apple.com/videos/play/wwdc2018/504/
https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/RefiningTheUserExperience/RefiningTheUserExperience.html
:: ОБНОВЛЕНИЕ ::
Я обнаружил при использовании AVAudioPlayer
вместо WKAudioFilePlayer
настройки для MPRemoteCommandCenter
, работающие нормально.
Проблемачто я не использую локальные аудиофайлы! .. Я транслирую файлы 'm3u8', используя wowza, который работал только с WKAudioFilePlayer
.И если я попытался выполнить потоковую передачу, используя AVAudioPlayer
, я получаю эту ошибку
Операция не может быть завершена.(Ошибка OSStatus 2003334207.)
Так что моя проблема сейчас в том, чтобы настроить MPRemoteCommandCenter
при использовании WKAudioFilePlayer
или найти способ потоковой передачи с помощью AVAudioPlayer
??