使用ReplayKit在屏幕上录制任何应用

时间:2019-02-01 13:37:49

标签: ios iphone replaykit

我正在尝试创建一个iPhone应用程序,该应用程序不仅记录该应用程序的屏幕,而且如果将其放到后台,它会记录屏幕上的所有内容,包括其他应用程序。这就是从“控制中心”进行记录的方式。所不同的是,我当然要在用户同意的情况下立即获得视频的访问而无需用户干预。

我已经在iOS 12上使用ReplayKit2实现了代码,该代码使用嵌入式的Broadcast Upload Extension。我没有在网上找到任何可以像这样工作的示例。

我在Bitbucket上发布了代码:https://bitbucket.org/breelig/replaykitbroadcasttofile/src/master/

我在SO上发现的类似壁橱的问题是:ReplayKit stops screen recording in background mode of the application or outside the app?

更新

基于@KaneCheshire和@AndreyA的良好反应。下面和其他随机来源,我能够开发出可行的解决方案。请在上方我的BitBucket链接中查看代码。

3 个答案:

答案 0 :(得分:2)

来自docs

  

用户设备上的应用可以共享录制功能,每个   具有自己的RPScreenRecorder实例的应用程序。您的应用可以记录   应用内部的音频和视频以及用户评论   通过麦克风

记录屏幕的唯一其他方法是通过Broadcast Upload Extension,它要求用户通过控制中心启动它。

答案 1 :(得分:1)

我遇到了几乎与您相同的问题,并且绝对缺少任何指南或文档。  我自己解决此问题的方法是将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-这些家伙在视频/音频捕获领域做得不错,我们可以尝试利用他们的经验。

答案 2 :(得分:0)

您可以在此处找到完全preferedExtension

image

当您完全添加pickerView.preferredExtension捆绑包标识符时,您的应用程序将显示在“录制应用程序列表”中。希望这会有所帮助!