Swift 每周重复本地通知
Repeating Local Notifications every Week with Swift
我有一个使用本地通知的应用程序共有 64 个通知,这是本地通知的限制。我需要每周重复每个通知。我知道要设置您使用的重复间隔:
alarm.repeatInterval = NSCalendarUnit
我试过使用 .WeekOfYear 和 .WeekOfMonth。他们每年或每月重复一次通知吗?而且我不知道每周的日历单位。我可以使用哪一个来每周重复一次?
编辑:
这是我用来设置通知的代码。
let notifyAlarm = UILocalNotification()
let component = NSDateComponents()
component.hour = NSUserDefaults.standardUserDefaults().integerForKey("Hour1")
component.minute = NSUserDefaults.standardUserDefaults().integerForKey("Minute1")
component.weekday = 1
notifyAlarm.fireDate = calendar.dateFromComponents(component)
notifyAlarm.timeZone = NSTimeZone.defaultTimeZone()
notifyAlarm.alertBody = NSUserDefaults.standardUserDefaults().stringForKey("Message1")
notifyAlarm.repeatInterval = NSCalendarUnit.WeekdayOrdinal
notifyAlarm.soundName = NSUserDefaults.standardUserDefaults().stringForKey("Sound1")
app.scheduleLocalNotification(notifyAlarm)
我一次设置了 64 个这样的通知。但是日期不同。
如果您希望通知在一周后第一次触发,您需要更改触发日期。
我为此使用 TimeIntervalSinceNow,以秒为单位,因此 1 周大约为 604000 秒。
您可以使用 _ 分隔数字以便于阅读。
alarm.fireDate = NSDate(timeIntervalSinceNow: 604_000)
可能有点笨拙,但我认为它对于这类通知来说是最简单的。我做这样的事情是为了让它更容易。
struct NotificationFireDate {
static let nextDay: NSTimeInterval = 85_000
static let nextWeek: NSTimeInterval = 604_000
}
然后像这样使用它
alarm.fireDate = NSDate(timeIntervalSinceNow: NotificationFireDate.nextWeek)
重复间隔应为 weekOfYear
alarm.repeatInterval = NSCalendarUnit.WeekOfYear
第一个重复通知应在第一个 (fireDate) 通知触发 1 周后触发。
查看完整列表(感谢 madmik3)
我有一个使用本地通知的应用程序共有 64 个通知,这是本地通知的限制。我需要每周重复每个通知。我知道要设置您使用的重复间隔:
alarm.repeatInterval = NSCalendarUnit
我试过使用 .WeekOfYear 和 .WeekOfMonth。他们每年或每月重复一次通知吗?而且我不知道每周的日历单位。我可以使用哪一个来每周重复一次?
编辑:
这是我用来设置通知的代码。
let notifyAlarm = UILocalNotification()
let component = NSDateComponents()
component.hour = NSUserDefaults.standardUserDefaults().integerForKey("Hour1")
component.minute = NSUserDefaults.standardUserDefaults().integerForKey("Minute1")
component.weekday = 1
notifyAlarm.fireDate = calendar.dateFromComponents(component)
notifyAlarm.timeZone = NSTimeZone.defaultTimeZone()
notifyAlarm.alertBody = NSUserDefaults.standardUserDefaults().stringForKey("Message1")
notifyAlarm.repeatInterval = NSCalendarUnit.WeekdayOrdinal
notifyAlarm.soundName = NSUserDefaults.standardUserDefaults().stringForKey("Sound1")
app.scheduleLocalNotification(notifyAlarm)
我一次设置了 64 个这样的通知。但是日期不同。
如果您希望通知在一周后第一次触发,您需要更改触发日期。 我为此使用 TimeIntervalSinceNow,以秒为单位,因此 1 周大约为 604000 秒。 您可以使用 _ 分隔数字以便于阅读。
alarm.fireDate = NSDate(timeIntervalSinceNow: 604_000)
可能有点笨拙,但我认为它对于这类通知来说是最简单的。我做这样的事情是为了让它更容易。
struct NotificationFireDate {
static let nextDay: NSTimeInterval = 85_000
static let nextWeek: NSTimeInterval = 604_000
}
然后像这样使用它
alarm.fireDate = NSDate(timeIntervalSinceNow: NotificationFireDate.nextWeek)
重复间隔应为 weekOfYear
alarm.repeatInterval = NSCalendarUnit.WeekOfYear
第一个重复通知应在第一个 (fireDate) 通知触发 1 周后触发。
查看完整列表(感谢 madmik3)