如何检测 iOS 中的每日首次启动?

how to detect daily first launch in iOS?

我们可以使用 NSUserdefaults 检测我们应用程序的首次启动。但是有什么方法可以检测 iOS 中的每日首次启动吗?我需要每天一次显示一个弹出窗口。

在 appDelegate 首次启动时将时间戳保存到 userdefaults 或某处,然后如果有时间戳,只需检查今天的日期是否与时间戳中的此日期不同,如果它替换旧时间戳并显示弹出窗口

applicationDidFinishLaunchingWithOptions,

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // get the time the app last launched
    let lastLaunch = NSUserDefaults.standardUserDefaults().doubleForKey("lastLaunch")
    let lastLaunchDate = NSDate(timeIntervalSince1970: lastLaunch)
    // check to see if lastLaunchDate is today.
    let lastLaunchIsToday = NSCalendar.currentCalendar().isDateInToday(lastLaunchDate)

    if !lastLaunchIsToday {
        // do your stuff, show a popup or whatever
    }
    // update the last launch value
    NSUserDefaults.setDouble(NSDate().timeIntervalSince1970(), forKey: "lastLaunch")
    return true
}

希望对您有所帮助:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        let timestamp = NSUserDefaults.standardUserDefaults().doubleForKey(forKey: "lastLaunch")

        if !NSDate.init(timeIntervalSinceNow: timestamp).isToday() {
            // Show popup
            NSUserDefaults.standardUserDefaults().setDouble(NSDate().timeIntervalSince1970, forKey: "lastLaunch")
            NSUserDefaults.standardUserDefaults().synchronize()
        }

        return false
}

extension NSDate {
    func isToday() -> Bool {
        let today = NSDate()
        self.compare(today)
        let todayCalendar: NSDateComponents = NSCalendar.currentCalendar().components([.Era, .Year, .Month, .Day], fromDate: today)
        let selfCalendar: NSDateComponents = NSCalendar.currentCalendar().components([.Era, .Year, .Month, .Day], fromDate: self)

        return todayCalendar.day == selfCalendar.day && todayCalendar.month == selfCalendar.month && todayCalendar.year == selfCalendar.year && todayCalendar.era == selfCalendar.era
    }
}

谢谢大家!得到了一个简单的解决方案。感谢支持

  let today = NSDate().formatted 
    if (NSUserDefaults.standardUserDefaults().stringForKey(Constants.FIRSTLAUNCH) == today)
    {
         //Already Launched today
    }
    else
    {
         //Today's First Launch
        NSUserDefaults.standardUserDefaults().setValue(today, forKey:Constants.FIRSTLAUNCH)
    }

extension NSDate {
var formatted: String {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "MM/dd/yyyy"
    return  formatter.stringFromDate(self)
}