如何检测 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)
}
我们可以使用 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)
}