4

问题描述

从未输入 startRecording() 完成处理程序,即使显示了“允许在 $AppName 中进行屏幕录制”弹出窗口。偶尔会显示“允许在 $AppName 中进行屏幕录制”弹出窗口。当我删除应用程序、重新启动设备并对项目进行清理/构建时,也会发生这种情况。我正在使用带有 iOS 11 和 Xcode 9 的 iPad Air 2。

研究

这个问题在早期版本中似乎也是一个问题,请参见此处:replaykit startrecording 有时从不进入完成处理程序 我不同意关闭 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)
        }
    })
}
4

1 回答 1

6

我想我自己找到了答案。请尝试一下并确认它是否有效:

  1. 删除您的应用
  2. 清洁 Xcode 项目
  3. 按住 iOS 设备的电源按钮
  4. 当出现滑动关闭时,按住home键直到屏幕闪烁黑色,然后松开所有按钮
  5. 再次运行您的 Xcode 项目
  6. 现在应该再次调用处理程序

我怀疑在使用的记录器共享实例中存在一些错误,只能在清理设备 RAM 时重置。

编辑: 我还观察到,仅当我在录制过程中使用 Xcode 停止正在运行的应用程序时才会发生此错误。如果我将应用程序置于后台或使用iOS任务管理器关闭应用程序,则再次启动应用程序时不会出现此错误。

结论: 请勿在录制运行时使用 Xcode 关闭您的应用程序。如果您改用 iOS 任务管理器,那么它将继续正常工作并传递回调。

编辑 2: 提交了错误报告,Apple 回答说他们知道这个问题,正在努力解决它。

于 2017-09-22T10:29:54.417 回答