Свойство RPScreenRecorder с включенным микрофоном не работает в 13.1.2 и 13.1.3
Я не могу программно изменить свойство звука средства записи экрана. Установка его в первый раз работает правильно, сброс в том же сеансе вызывает проблемы.
Сценарий №1
- Запустите приложение
- Включите переключатель
- Просит разрешения, дайте разрешение
- Он начинает запись видео и воспроизводит его без отключения звука, что правильно.
- Теперь выключите тумблер
- Он начинает запись видео, НО воспроизводится как НЕ ВЫКЛЮЧЕН, что НЕ правильно.
Сценарий # 2
- Запустите приложение
- Держите переключатель выключенным
- Просит разрешения, дайте разрешение
- Он начинает запись видео и играет без звука, что правильно.
- Теперь включите переключатель
- Он начинает запись видео, НО воспроизводится как 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)
}
}