Свойство RPScreenRecorder с включенным микрофоном не работает в 13.1.2 и 13.1.3

Я не могу программно изменить свойство звука средства записи экрана. Установка его в первый раз работает правильно, сброс в том же сеансе вызывает проблемы.

Сценарий №1

  1. Запустите приложение
  2. Включите переключатель
  3. Просит разрешения, дайте разрешение
  4. Он начинает запись видео и воспроизводит его без отключения звука, что правильно.
  5. Теперь выключите тумблер
  6. Он начинает запись видео, НО воспроизводится как НЕ ВЫКЛЮЧЕН, что НЕ правильно.

Сценарий # 2

  1. Запустите приложение
  2. Держите переключатель выключенным
  3. Просит разрешения, дайте разрешение
  4. Он начинает запись видео и играет без звука, что правильно.
  5. Теперь включите переключатель
  6. Он начинает запись видео, НО воспроизводится как MUTED, что НЕ правильно.

Затем я увидел обновление Apple для ios 13.1.3, я его тоже загрузил и попробовал наше приложение, но оно действует точно так же, как указано выше. Я надеялся, что это решит проблему, но это не имело никакого значения.

Обновления ios 12 также показали разные результаты при использовании одного и того же кода. Это действительно очень расстраивает. Любая помощь будет оценена по достоинству.

\ ------------------------------------------------- ------------

импортировать UIKit импортировать ReplayKit

class RecordingViewController: UIViewController, RPPreviewViewControllerDelegate {

var flagIsMicrophoneEnabled = false
let btnSwitch = UISwitch()
let recorder = RPScreenRecorder.shared()
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .plain, target: self, action: #selector(startRecording))
    btnSwitch.center = self.view.center
    btnSwitch.addTarget(self, action: #selector(changeMicrophoneStatus), for: .valueChanged)
    self.view.addSubview(btnSwitch)
}

@objc func changeMicrophoneStatus(){
    flagIsMicrophoneEnabled = !flagIsMicrophoneEnabled
    print("Is microphone enabled: \(flagIsMicrophoneEnabled)")
}

@objc func startRecording() {
    recorder.isMicrophoneEnabled = flagIsMicrophoneEnabled
    recorder.startRecording{ [unowned self] (error) in
        if let unwrappedError = error {
            print("error#1: ",unwrappedError.localizedDescription)
        } else {
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Stop", style: .plain, target: self, action: #selector(self.stopRecording))
        }
    }
}

@objc func stopRecording() {
    print("Is microphone enabled: \(recorder.isMicrophoneEnabled)")
    if recorder.isRecording{
        recorder.stopRecording { [unowned self] (preview, error) in
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .plain, target: self, action: #selector(self.startRecording))
            if let unwrappedError = error {
                print("error#2: ",unwrappedError.localizedDescription)
            }
            if let unwrappedPreview = preview {
                if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
                    unwrappedPreview.modalPresentationStyle = UIModalPresentationStyle.popover
                    unwrappedPreview.popoverPresentationController?.sourceRect = CGRect.zero
                    unwrappedPreview.popoverPresentationController?.sourceView = self.view
                }
                unwrappedPreview.previewControllerDelegate = self
                self.present(unwrappedPreview, animated: true)
            }
        }
    }
}

func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
    dismiss(animated: true)
}

}

0 ответов

Другие вопросы по тегам