RPScreenRecorder如何录制应用程序动作扩展的屏幕音频和视频?

时间:2018-02-11 18:43:16

标签: ios iphone swift replaykit 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 个答案:

答案 0 :(得分:1)

我很确定Apple不会让你设计。在扩展方面,它们通常非常严格,无论是在允许的范围内还是通过应用审核的内容方面。

即使你找到一个克服 ReplayKit 问题的hacky解决方案,我想它会被应用评论拒绝。

在一般App Review Guidelines中,app extension programming guide被引用作为定义指南,其中明确指出了行动扩展:

  

在iOS中,一个Action扩展名:

     
      
  • 帮助用户以不同的方式查看当前文档
  •   
  • 始终显示在操作表或全屏模式视图中
  •   
  • 仅在主机应用程序明确提供的情况下接收所选内容
  •   

不太确定屏幕录制如何以一种说服Apple的方式适合该模式......

答案 1 :(得分:0)

我不认为这是不可能的,因为我在App Store上看到了一些应用程序,它们在iMessage扩展应用程序中录制视频和音频。喜欢:SuperMoji App此应用程序记录面部表情和音频  并仅在iPhone的消息应用程序中作为视频消息发送。

但是,我不确定如何在扩展程序中执行此操作。我正在努力,很快就会让你知道。