我需要更新用户令牌,发送到数据库以验证并处理来自应用程序的请求。
用户令牌每个月都会过期以确保安全,因此我必须每隔20天或25天拨打续订令牌的功能。
我已经考虑过使用NSTimer但是当应用程序关闭时它会停止,因此不是解决方案。
你知道我该怎么办?
答案 0 :(得分:3)
这样做
// Get current date
let date = NSDate()
// Add 20 days to it
let tokenDaysAdded: NSDate = date.dateByAddingTimeInterval(Double(60 * 60 * 24 * 20)) as! NSDate
// Save it to your NSUserDefaults
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(tokenDaysAdded, forKey: "token")
// Get the token date
let tokenDate = defaults.objectForKey("token")!
// Get current date
let now: NSDate = NSDate()
// Check if tokenDaysAdded is earler than today, then you´re ok
if tokenDaysAdded.earlierDate(now) == tokenDate as! NSObject {
// you´re ok
}
// Else you need to update the token since tokenDaysAdded is greater than todays date
else {
// tokenDaysAdded is earlier
// Send notifcation about updating the token
}
答案 1 :(得分:0)
存储令牌上次更新的日期或有效时的日期,并在应用程序再次打开时续订令牌。这是你在iOS上实现这一目标的唯一方法。你不能在后台运行一个长时间的计时器,系统会杀掉它。
另一种方法是在令牌即将过期或已过期时发送远程通知,然后续订令牌(它将唤醒应用)。