2017-01-10 15 views
1

Я использую replaykit в своем приложении, и после того, как пользователь сделал запись, я предоставляю кнопку для «совместного» видео. Я представляю RPPreviewViewController, и если я нажму на воспроизведение видео, когда я вернусь в приложение, звук не будет работать. Он работает только после того, как я вернусь к предыдущему viewController и вернусь к записи с записью.RPPreviewViewController отключает звук после воспроизведения

Мое приложение - приложение для композиции музыки, поэтому звук очень важен. Я даже пытался сброс AVAudioSession категории после того, как вид воспроизведения увольняет так:

func showPreview() { 
    if let unwrappedPreview = self.preview { 
     unwrappedPreview.previewControllerDelegate = self 
     self.present(unwrappedPreview, animated: true, completion: nil) 
    } else { 
     let alert = UIAlertController(title: "No recordings to share", message: "By hitting the play or record button you can record a video of your composition to share with others. Once you hit stop, the recording will be saved and ready to share.", preferredStyle: .alert) 
     let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) 
     alert.addAction(okAction) 
     self.present(alert, animated: true, completion: nil) 
    } 
} 

func previewControllerDidFinish(_ previewController: RPPreviewViewController) { 
    let audioSession = AVAudioSession.sharedInstance() 
    try! audioSession.setCategory(AVAudioSessionCategoryPlayback) 
    dismiss(animated: true) 
} 

ответ

1

Не уверен, если это любая помощь, но только что нашел этот вопрос с нашим, где мы используем OalPlayback для звуковых эффектов. Перед показом контроллера предварительного просмотра я теперь выпустил объект Oal, и после отклонения предварительного просмотра я создаю новый.

+0

Мое решение было похоже. У нас есть объект «Synthesizer», который воспроизводит MIDI, и удаляет его, а новый делает работу. На самом деле не объясняет, что происходит, к сожалению. – CodyMace

+0

Это довольно забавный контроллер. Я остановился на контрольных точках и даже разбил наше приложение, пока оно отображается, и все элементы управления продолжают работать. – Jer

+0

Ха-ха, это перепуталось. – CodyMace

0

Я использую ObjectAL и нашел эту проблему. Я смог решить эту проблему, используя эту команду:

OALAudioSession.sharedInstance().forceEndInterruption() 

Похоже, что replayKit не прерывает прерывание.