다음은 내가 제시 한 감지 방법입니다.
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 #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
checkIfShownSKStoreReviewController(0, originalWindowCount: UIApplication.shared.windows.count)
}
}
당신은 UserDefaults를 사용하고 싶지 않지만 SKStore 검토 컨트롤러가 현재 제시되었거나 이전에 제공되었는지 확인하는 방법이 있다고하더라도 다음 값을 어떻게 저장하겠습니까? 하지만 [이] (http://stackoverflow.com/questions/43075515/how-to-use-requestreview-skstorereviewcontroller-to-show-review-popup-in-the) 답변을 확인합니다. –
[SKStoreReviewController]의 가능한 중복 사용자가 설정에서 3 시간 제한에 도달 한이 앱 (RTA)을 해제했음을 감지하는 방법?] (https://stackoverflow.com/questions/42533520/skstorereviewcontroller-how-to-detect) -that-user-has-off-rate-this-app-rt) –