2

我想用目标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 来实现这一目标,还是我需要使用其他方法来实现这一目标?谢谢。

4

2 回答 2

1

我很确定 Apple 不会故意让你这样做当涉及到扩展时,它们通常非常严格,无论是允许 api 的内容还是通过应用程序审查的内容。

即使你想出一个解决问题的方法来克服ReplayKit的问题,我想它也会被应用审查拒绝。

在通用App Review Guidelines中,应用扩展编程指南被引用为定义指南,其中对于操作扩展它特别指出:

在 iOS 中,Action 扩展:

  • 帮助用户以不同的方式查看当前文档
  • 始终出现在操作表或全屏模式视图中
  • 仅当主机应用明确提供时才接收选定内容

不太确定屏幕录制如何以说服 Apple 的方式融入该模式......

于 2018-03-01T19:52:02.960 回答
0

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

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

于 2018-04-05T07:28:21.323 回答