RPScreenRecorder Как запись экрана аудио и видео приложения Action Extension?
Я хотел бы записать экран, аудио и видео моего приложения с целевым расширением действия.
Если я помещаю этот код в обычное приложение, оно работает, а в расширении действия - нет.
@IBAction func recButton(_ sender: Any) {
if recButton.currentTitle == "stop" {
stopRecording()
recButton.setTitle("rec", for: .normal)
}
else {
recButton.setTitle("stop", for: .normal)
RPScreenRecorder.shared().isMicrophoneEnabled = true
RPScreenRecorder.shared().startRecording(handler: {[unowned self] (error) in
//Handler - never called
if let unwrappedError = error {
print(unwrappedError.localizedDescription)
}
})
}
}
func stopRecording() {
RPScreenRecorder.shared().stopRecording(handler: {(previewController, error) -> Void in
//Handler - never called
if previewController != nil {
let alertController = UIAlertController(title: "Recording", message: "Do you want to discard or view your recording?", preferredStyle: .alert)
let discardAction = UIAlertAction(title: "Discard", style: .default) { (action: UIAlertAction) in
RPScreenRecorder.shared().discardRecording(handler: { () -> Void in
// Executed once recording has successfully been discarded
})
}
let viewAction = UIAlertAction(title: "View", style: .default, handler: { (action: UIAlertAction) -> Void in
self.present(previewController!, animated: true, completion: nil)
})
alertController.addAction(discardAction)
alertController.addAction(viewAction)
self.present(alertController, animated: true, completion: nil)
} else {
// Handle error
}
})
}
Есть ли другой метод для достижения этой цели с помощью AVCaptureSession или мне нужно использовать что-то еще для достижения этой цели? Благодарю.
2 ответа
Я почти уверен, что Apple не позволит вам сделать это по замыслу. Когда речь идет о расширениях, они, как правило, очень строги как в отношении того, что разрешено для применения, так и в отношении того, что будет проходить проверку приложения.
Даже если вы найдете хакерское решение для преодоления проблем с ReplayKit, я думаю, оно будет отклонено обзором приложения.
В общих рекомендациях по обзору приложений руководство по программированию расширений приложений упоминается как определяющая рекомендация, в которой для расширения действия конкретно указывается:
В iOS расширение Action:
- Помогает пользователям просматривать текущий документ по-другому
- Всегда отображается на листе действий или в полноэкранном режиме
- Получает выбранный контент, только если он явно предоставлен хост-приложением
Не совсем уверен, как запись экрана вписывается в этот шаблон таким образом, что убеждает Apple...
Я не думаю, что это невозможно, так как я видел некоторые приложения в App Store, которые записывают видео и аудио в приложении расширения iMessage. Как: приложение SuperMoji Это приложение записывает выражение лица и аудио и отправляет в виде видео сообщения только в приложении iPhone сообщения.
Однако я не уверен, как это сделать в приложениях расширения. Я работаю над этим и сообщу вам очень скоро.