This is how I discovered that it was introduced.
private static func checkIfShownSKStoreReviewController(_ iteration: Int, originalWindowCount: Int) { let windows = UIApplication.shared.windows if windows.count > originalWindowCount { let window = windows[1] if window.className == "UITextEffectsWindow" || window.className == "UIRemoteKeyboardWindow" { print("Shown SKVC iteration: \(iteration)") //Do logic stuff like saving to your database return } } if iteration > 2000 { print("checkIfShownSKStoreReviewController: timeout, bailing \(iteration)") return } runThisAfterDelay(seconds: 0.02, after: { checkIfShownSKStoreReviewController(iteration + 1, originalWindowCount: originalWindowCount) }) } private static func runThisAfterDelay(seconds seconds: Double, after: () -> ()) { let time = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC))) dispatch_after(time, dispatch_get_main_queue(), after) } static func showReview() { print("Showing AppStore Review") if
source share