         
     }
     
+    fileprivate func setUserHasRatedApp() {
+        userDefaultsObject.set(true, forKey: keyForAppRatingKeyString(appratingRatedCurrentVersion));
+        userDefaultsObject.set(true, forKey: keyForAppRatingKeyString(appratingRatedAnyVersion));
+        userDefaultsObject.synchronize()
+    }
+    
     private func hideRatingAlert() {
         if let alert = ratingAlert {
             alert.dismiss(animated: false, completion: nil);

    // MARK: PRIVATE Functions
    
    fileprivate func rateApp() {
        
        userDefaultsObject.set(true, forKey: keyForAppRatingKeyString(appratingRatedCurrentVersion));
        userDefaultsObject.set(true, forKey: keyForAppRatingKeyString(appratingRatedAnyVersion));
        userDefaultsObject.synchronize()
        
        if (defaultOpensInStoreKit()) {
            UIApplication.shared.openURL(URL(string: reviewURLString())!)
        } else {

    
    
    fileprivate func defaultOpensInSKStoreReviewController() -> Bool {
        let version = UIDevice.current.systemVersion.compare("10.3", options: NSString.CompareOptions.numeric);
        switch version {
        case .orderedSame, .orderedDescending:
            return true;
        case .orderedAscending:
