Как отобразить диалоговое окно оценки приложения после X раз? - PullRequest
0 голосов
/ 20 апреля 2020

Я сделал приложение со Swift в XCode и внедрил модальное приложение Rate App в своем приложении, но проблема в том, что оно показывается, когда пользователи устанавливают приложение и открывают его в первый раз, но я хочу показать его через 2 или 3 дня, так что пользователи могут просматривать мое приложение, и если ему нравится, он может оценить мое приложение. это мой код

 let reviewService = ReviewService.shared

       override func viewDidAppear(_ animated: Bool) {
             super.viewDidAppear(animated)
             let deadline = DispatchTime.now() + .seconds(120)
             DispatchQueue.main.asyncAfter(deadline: deadline) { [weak self] in
                 self?.reviewService.requestReview()
             }
         }

, а это мой файл ReviewService.swift

 private init() {}
static let shared = ReviewService()

private let defaults = UserDefaults.standard
private let app = UIApplication.shared

private var lastRequest: Date? {
    get {
        return defaults.value(forKey: "ReviewService.lastRequest") as? Date
    }
    set {
        defaults.set(newValue, forKey: "ReviewService.lastRequest")
    }
}

private var oneWeekAgo: Date {
    return Calendar.current.date(byAdding: .day, value: -7, to: Date())!
}

private var shouldRequestReview: Bool {
    if lastRequest == nil {
        return true
    } else if let lastRequest = self.lastRequest, lastRequest < oneWeekAgo {
        return true
    }
    return false
}

func requestReview(isWrittenReview: Bool = false) {
  guard shouldRequestReview else { return }
    if isWrittenReview {
        let appStoreUrl = URL(string: "https://itunes.apple.com/app/idxxxxxxx?action=write-review")!
        app.open(appStoreUrl)
    } else {
        if #available(iOS 10.3, *) {
            SKStoreReviewController.requestReview()
        } else {
            // Fallback on earlier versions
        }
    }
    lastRequest = Date()
}

}

1 Ответ

0 голосов
/ 20 апреля 2020

Когда код обнаружит, что предыдущий запрос не был сохранен, не показывать запрос. Вместо этого, за исключением того, что последний запрос произошел 4 или 5 дней go. Затем через несколько дней будет показан первый запрос на проверку.

Одним из способов сделать это было бы использование метода getRequestReview. Если lastRequset равен нулю, создайте новое время запроса и сохраните его, а затем верните false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...