【问题标题】:Notification in Swift every day at a set time? [duplicate]每天在设定的时间用 Swift 通知? [复制]
【发布时间】:2015-07-01 19:33:38
【问题描述】:

如果有人感到困惑并认为这是我昨天的问题的重复,那不是。那里问每天怎么调用函数,这里问每天特定时间怎么调用通知。

我正在寻找一种每天早上 7 点重复本地通知的方法。我目前有这个代码设置来获取日、月、年等。

let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: date)
    let hour = components.hour
    let minutes = components.minute
    let month = components.month
    let year = components.year
    let day = components.day

每天早上 7:00 时如何调用通知?

【问题讨论】:

标签: ios swift nsdate


【解决方案1】:

首先像你一样创建日历对象:

var calendar = NSCalendar()
var calendarComponents = NSDateComponents()
calendarComponents.setHour(7)
calendarComponents.setSeconds(0)
calendarcomponents.setMinutes(0)
calendar.setTimeZone(NSTimeZone.defaultTimeZone)
var dateToFire = calendar.dateFromComponents(calendarComponents)

现在我们可以每天安排通知。

localNotification.fireDate = dateToFire
localNotification.setTimeZone(NSTimeZone.defaultTimeZone)
localNotification.setRepeatInterval(kcfCalendarUnitDay)

语法可能不完美,我是从 Obj-C 翻译过来的,但你应该明白大致的意思。

【讨论】:

  • localNotification 变量是什么。您应该更新答案以显示类型是什么以及如何创建它,以便 OP 可以轻松重现您提供的示例代码。
【解决方案2】:
    var now = NSDate()
    var calendar = NSCalendar.currentCalendar()
    var components = calendar.components(.CalendarUnitHour | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: now)
    var d = NSCalendar.currentCalendar().dateFromComponents(components)
    if components.hour > 6 {
        d = NSDate(timeInterval: 60*60*24, sinceDate: d!)
    }


    var n = UILocalNotification()
    n.fireDate = d
    n.repeatInterval = NSCalendarUnit.CalendarUnitDay
    n.alertBody = "This is dayly notification"
    UIApplication.sharedApplication().scheduleLocalNotification(n)

【讨论】:

  • 当您说“设置下一个 7.00 日期”时,您在顶部是什么意思?如何设置 7.00 日期?
  • @Yedidya 他的问题专门询问如何设置日期,将一段代码与“设置下一个 7:00 日期”的注释放在一起并没有帮助。
  • 请在您的答案中添加其他信息。仅仅粘贴源代码是不够的。您需要解释您的答案实际上在做什么以及如何将其应用于实际问题,即推送本地通知。你有 3K 声望,你应该知道这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
相关资源
最近更新 更多