在使用replaykit ios的直播中,试图启动一个无效的广播会话。

问题描述 投票:3回答:1

我目前正在开发一个直播屏幕的应用程序,它允许用户在Youtube,Facebook,Mobcrush等应用程序上分享他们的屏幕。一切都很好,但有时会自动停止广播,并抛出以下错误,每次我打开应用程序,并在提出 RPBroadcastActivityViewController 并在选择应用程序后,所选应用程序的实时预览视图会被自动取消,并且还 RPBroadcastActivityViewController 被解雇了。还有,我不能启用麦克风。如果我启用麦克风,它就会抛出一个错误。

当广播自动停止时出错 -

试图启动一个无效的广播会话。

当我尝试启用麦克风时出错 -

在开始录音前必须先启用麦克风录音。

我的代码:-

extension MainViewController: RPBroadcastActivityViewControllerDelegate {
    func broadcastActivityViewController(_ broadcastActivityViewController: RPBroadcastActivityViewController, didFinishWith broadcastController: RPBroadcastController?, error: Error?) {
        broadCastVC = broadcastController
        broadCastVC?.delegate = self

        broadcastActivityViewController.dismiss(animated: true) {
            guard error == nil else {
                return
            }

            broadCastVC?.startBroadcast(handler: { (error) in
                RPScreenRecorder.shared().delegate = self
                RPScreenRecorder.shared().isMicrophoneEnabled = true
                guard error != nil else {
                    return
                }
                print(stringVal: "Live :- Error:- \(error?.localizedDescription ?? "")")
            })
        }
    }
}


extension MainViewController: RPBroadcastControllerDelegate {
    func broadcastController(_ broadcastController: RPBroadcastController, didFinishWithError error: Error?) {
        guard error != nil else {
            return
        }
        print(stringVal: "Live :- Error while starting broadcast :- \(error?.localizedDescription ?? "")")

        if broadCastVC?.isBroadcasting == true {
            broadCastVC?.finishBroadcast(handler: { (error) in
            })
        }
    }
}

extension MainViewController: RPScreenRecorderDelegate { }


extension MainViewController {

    @IBAction func switchAudio(_ sender: Any) {
        let sharedRecorder = RPScreenRecorder.shared()
        sharedRecorder.isMicrophoneEnabled = self.audioSwitch.isOn
    }

    @IBAction func btnStartBroadCastAction(_ sender: UIButton) {
        if broadCastVC?.isBroadcasting == true {
            broadCastVC?.finishBroadcast(handler: { (error) in
            })
        } else {
            RPBroadcastActivityViewController.load(handler: { (broadCastACTVC, error) in
                if let broadcastAVC = broadCastACTVC {
                    broadcastAVC.delegate = self

                    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.phone {
                        self.present(broadcastAVC, animated: true, completion: nil)
                    } else {
                        broadcastAVC.popoverPresentationController?.sourceView = self.btnBroadCast
                        broadcastAVC.modalPresentationStyle = UIModalPresentationStyle.formSheet
                        broadcastAVC.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
                        self.present(broadcastAVC, animated: true, completion: nil)
                    }
                }
            })
        }
    }
}

我找不到任何ReplayKit的文档。如果有的话,请帮我找一下ReplayKit的文档或者例子。

谢谢你的帮助。

ios swift broadcast screensharing replaykit
1个回答
0
投票

这意味着你的扩展在设置完成之前就已经崩溃了。使用菜单 Debug &gt.,输入你的扩展进程的准确名称,等待它被设置(它应该出现在调试检查器下),然后启动你的广播会话。Attach to Process by PID or Name…,输入你的扩展进程的准确名称,等待它被设置(它应该出现在调试检查器下),然后开始你的广播会话。然后你会在你的调试器中找到你的崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.