Problem description
The startRecording() completion handler is never entered, even though the "Allow screen recording in $AppName" pop-up was shown. The "Allow screen recording in $AppName" pop-up is shown occasionally. This happens also when I remove the app, restart the device and do a clean/build on the project. I'm using an iPad Air 2 with iOS 11 and Xcode 9.
Research
This problem seemed to be an issue in earlier versions as well, see here: replaykit startrecording sometimes never enters completion handler I can't approve that turning off WiFi or having a stable internet connection solves this problem, neither has this problem being fixed in iOS 11.
Here is the code I'm using:
@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)
}
})
}