我目前正在开发一个直播屏幕的应用程序,它允许用户在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的文档或者例子。
谢谢你的帮助。
这意味着你的扩展在设置完成之前就已经崩溃了。使用菜单 Debug
>.,输入你的扩展进程的准确名称,等待它被设置(它应该出现在调试检查器下),然后启动你的广播会话。Attach to Process by PID or Name…
,输入你的扩展进程的准确名称,等待它被设置(它应该出现在调试检查器下),然后开始你的广播会话。然后你会在你的调试器中找到你的崩溃。