问题描述
即使显示“允许在$ AppName中进行屏幕录制”弹出窗口,也从不输入startRecording()完成处理程序。偶尔显示“允许在$ AppName中进行屏幕录制”弹出窗口。当我删除应用程序,重新启动设备并对项目执行清理/构建时,也会发生这种情况。我正在使用带有iOS 11和Xcode 9的iPad Air 2.
研究
此问题在早期版本中似乎也是一个问题,请参阅此处:replaykit startrecording sometimes never enters completion handler 我无法批准关闭WiFi或拥有稳定的互联网连接解决了这个问题,iOS 11中也没有修复此问题。
以下是我正在使用的代码:
@IBAction func recordButtonTapped(_ sender: UIButton) {
if !recorder.isRecording {
startRecording(sender)
} else {
stopRecording(sender)
}
}
private func startRecording(_ sender: UIButton) {
guard recorder.isAvailable else {
print("Recording is not available at this time.")
// Display UI for recording being unavailable
return
}
recorder.startRecording(handler: { (error) in
guard error == nil else {
print("There was an error starting the recording.")
print(error!)
return
}
print("Started Recording Successfully")
DispatchQueue.main.async {
sender.setTitle("Stop Recording", for: .normal)
sender.setTitleColor(.red, for: .normal)
}
})
}
答案 0 :(得分:3)
我想我自己找到了答案。请尝试一下,并确认它是否有效:
我怀疑使用的记录器共享实例中存在一些错误,只能在清理设备RAM时重置。
修改强> 我还观察到,只有在录制过程中我使用Xcode停止正在运行的应用程序时才会出现此错误。如果我将应用程序置于后台或使用iOS任务管理器关闭应用程序,则再次启动应用程序时不会出现此错误。
结论: 请勿使用Xcode关闭您的应用,同时录制正在运行。如果您使用iOS任务管理器,那么它将继续正常工作并提供回调。
编辑2: 提交了一份错误报告,Apple回答说他们已经意识到了这个问题,正在努力解决这个问题。