Используйте ReplayKit для записи любого приложения на экране - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать приложение для iPhone, которое записывает не только экран приложения, но, если поместить его в фоновый режим, оно записывает все на экране, включая другие приложения.Так работает запись из «Центра управления».Разница в том, что я хочу получить доступ к видео сразу, без вмешательства пользователя, с согласия пользователя, конечно.

Я реализовал код, используя ReplayKit2 на iOS 12, который использует встроенное расширение широковещательной загрузки.Я не нашел ни одного примера в Интернете, который бы работал так.

Я разместил код на Bitbucket: https://bitbucket.org/breelig/replaykitbroadcasttofile/src/master/

Подобный шкафу вопрос, который я нашел на SO: ReplayKit останавливает экранзапись в фоновом режиме приложения или вне приложения?

Обновление

Основано на хороших ответах @KaneCheshire и @AndreyA.Ниже и другие случайные источники мне удалось разработать решение, которое работает.Пожалуйста, смотрите код в моей ссылке BitBucket выше.

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Я столкнулся почти с той же проблемой, что и вы, и в ней совершенно отсутствуют какие-либо руководства или документация.Я решил эту проблему самостоятельно, установив nil для моих предпочтительных расширений, поэтому RPSystemBroadcastPickerView показывает все из них, включая захват видео с экрана системы:

override func viewDidLoad() {
    super.viewDidLoad()

    let broadcastPicker = RPSystemBroadcastPickerView(frame: CGRect(x: 100, y: 100, width: 80, height: 80))
    broadcastPicker.preferredExtension = nil

    view.addSubview(broadcastPicker)
}

Также я обнаружил одну вещь, которую я 'мы решили быть полезными - эта библиотека Twilio и ее пример - https://github.com/twilio/video-quickstart-swift/tree/master/ReplayKitExample - Эти ребята неплохо поработали в области захвата видео / аудио, и мы можем попытаться использовать их опыт.

0 голосов
/ 26 апреля 2019

Вы можете точно найти свой preferedExtension здесь:

image

Когда вы добавите pickerView.preferredExtension точно Идентификатор пакета, ваше приложение будет отображаться в Списке приложений для записи.Надеюсь, это поможет!

0 голосов
/ 04 февраля 2019

Из документов :

Приложения на устройстве пользователя могут совместно использовать функцию записи, причем каждое приложение имеет свой собственный экземпляр RPScreenRecorder.Ваше приложение может записывать аудио и видео внутри приложения вместе с комментариями пользователя через микрофон

Единственный другой способ записи экрана - через BroadcastЗагрузите расширение , которое требует, чтобы пользователь инициировал его через Центр управления.

...