询问用户每周的费率

时间:2016-03-27 20:03:54

标签: ios swift

在我的应用中,我想每周询问一下,他们是否愿意为应用评分。

所以我试着建立一个日期,我检查它是否已经通过,如果它已经通过,同时它要求评级并将日期更改为(Nsdate())加上一周:

 var rateDatum: NSDate {
    get {
        let defaults = NSUserDefaults.standardUserDefaults()
        if let date = defaults.objectForKey("rateDatum") {
            return date as! NSDate
        }else{
            let Datum = NSDate()
            Datum.dateByAddingTimeInterval(120)
            return Datum
        }
    }

    set (newValue) {
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(newValue, forKey: "rateDatum")
    }
}

// the function for checking
func checkRateDatum(){
    let components = NSDateComponents()
    components.year = 2000
    components.month = 1
    let calender = NSCalendar.currentCalendar()
    let newDatum = calender.dateFromComponents(components)

    if rateDatum != newDatum! {
        let currentdate = NSDate()
        if currentdate.compare(rateDatum) == NSComparisonResult.OrderedDescending {
            print("alert")
            let alertMotion = UIAlertController(title: "Rate?", message: "Would you mind rating the app?", preferredStyle:UIAlertControllerStyle.Alert)
            alertMotion.addAction(UIAlertAction(title: "5 Sterren", style: UIAlertActionStyle.Default){action in
                //Rederect to app's url

                })
            alertMotion.addAction(UIAlertAction(title: "Later", style: UIAlertActionStyle.Cancel){action in
                //change RateDatum
                self.rateDatum = NSDate()
                self.rateDatum.dateByAddingTimeInterval(604800)
                })
            alertMotion.addAction(UIAlertAction(title: "Never", style: UIAlertActionStyle.Default){action in
                //verander datum zo dat hij niet meer wordt gezien
                self.rateDatum = newDatum!
                })
            self.presentViewController(alertMotion, animated: true, completion: nil)
        }
    }
}

但这并没有真正起作用,检查日期是否过去真的很奇怪。

我希望它每周都能提出来,但前提是用户正在使用该应用程序 所以它会检查日期是否过去 我也希望用户选择Never,所以弹出窗口永远不会再来。

有人知道我的代码有什么问题吗 或者知道更好的方法来处理费率应用程序弹出窗口?

聚苯乙烯。对不起,如果问题不清楚,我不是英文,所以我觉得提问真的很难。

更新:所有代码,如果有人需要它。

 var userUninterestedInRating: Bool {
        get {
            let defaults = NSUserDefaults.standardUserDefaults()
            return defaults.boolForKey("userUninterestedInRating")
        }

        set (newvalue) {
            let defaults = NSUserDefaults.standardUserDefaults()
            defaults.setBool(newvalue, forKey: "userUninterestedInRating")
        }
    }

var rateDatum: NSDate {
    get {
        let defaults = NSUserDefaults.standardUserDefaults()
        if let date = defaults.objectForKey("rateDatum") {
            return date as! NSDate
        }else{
            let Datum = NSDate(timeIntervalSinceNow: 604800)
            defaults.setObject(Datum, forKey: "rateDatum")
            return Datum
        }
    }

    set (newValue) {
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(newValue, forKey: "rateDatum")
    }
}
    func checkRateDatum(){
    if !userUninterestedInRating {
        let currentdate = NSDate()
        if currentdate.compare(rateDatum) == NSComparisonResult.OrderedDescending {
            let alertMotion = UIAlertController(title: "Rate?", message: "Would you mind rating the app?", preferredStyle:UIAlertControllerStyle.Alert)
            alertMotion.addAction(UIAlertAction(title: "5 Sterren", style: UIAlertActionStyle.Default){action in
                //Rederect to app's url

                })
            alertMotion.addAction(UIAlertAction(title: "Later", style: UIAlertActionStyle.Cancel){action in
                //change RateDatum
                self.rateDatum = NSDate(timeIntervalSinceNow: 604800)
                })
            alertMotion.addAction(UIAlertAction(title: "Never", style: UIAlertActionStyle.Default){action in
                //verander bool zo dat hij niet meer wordt gezien
                self.userUninterestedInRating = true
                })
            self.presentViewController(alertMotion, animated: true, completion: nil)
        }
    }
}

1 个答案:

答案 0 :(得分:2)

1)此代码:

self.rateDatum = NSDate()
self.rateDatum.dateByAddingTimeInterval(604800)

将rateDatum设置为当前日期/时间。它向rateDatum添加任何内容。请注意,dateByAddingTimeInterval:会返回 NSDate对象。

更好的是:

rateDatum = NSDate(timeIntervalSinceNow: 604800)

2)使用!=比较日期是不合适的,除非您已经超载运算符以使用NSDates。您需要使用比较来比较它们。