【问题标题】:How to set a weekly local notification in swift如何快速设置每周本地通知
【发布时间】:2016-12-04 19:43:37
【问题描述】:

我的代码有问题。

我想在 xcode7 中设置本地通知,我正在开发一个日历,您可以在其中放置大学的课程,问题是我从 json 数据库中获取日程安排,我想在开课前 15 分钟通知课程开始了,但我不知道为什么我的代码不起作用。

这是我想在每周一 13:40 重复通知的示例。

我只能设置日期和时间吗?还是我也应该指定月份和年份?

  var dateComp:NSDateComponents = NSDateComponents()

    dateComp.day = 01;
    dateComp.hour = 13;
    dateComp.minute = 40;
    dateComp.timeZone = NSTimeZone.systemTimeZone()

    var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
    var date:NSDate = calender.dateFromComponents(dateComp)!

    let notification = UILocalNotification()
    notification.fireDate = date
    notification.alertBody = "Swipe to unlock"
    notification.alertAction = "You've got a class soon!"
    notification.soundName = UILocalNotificationDefaultSoundName
    notification.userInfo = ["CustomField1": "w00t"]
    notification.repeatInterval = NSCalendarUnit.WeekOfYear

    UIApplication.sharedApplication().scheduleLocalNotification(notification)

【问题讨论】:

标签: ios swift swift2 uilocalnotification


【解决方案1】:

请检查此功能

func setLNotification(weekDay:Int , hour:Int, min:Int, second:Int, alertBody:String, type:String, isRepeate:Bool){
    let calender = NSCalendar(identifier: NSCalendarIdentifierGregorian)
    let dateComp: NSDateComponents?
    let components: NSDateComponents = NSDateComponents()

    if weekDay > 0{
        components.setValue(-50, forComponent: NSCalendarUnit.Year)

        let previousDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))!
        dateComp = calender?.components([.Year,.WeekOfMonth,.Month], fromDate: previousDate)
        dateComp?.hour = hour
        dateComp?.minute = min
        dateComp?.second = second
        dateComp?.weekday = weekDay
    }else{
        components.setValue(hour, forComponent: NSCalendarUnit.Hour)
        components.setValue(min, forComponent: NSCalendarUnit.Minute)
        components.setValue(second, forComponent: NSCalendarUnit.Second)
        let notifiDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))!
        dateComp = calender?.components([.Year,.Month,.Day,.Hour,.Minute,.Second], fromDate: notifiDate)
    }

    let notification = UILocalNotification()
    if isRepeate == true{
        notification.repeatInterval = NSCalendarUnit.WeekOfYear
        notification.repeatCalendar = calender
    }
    notification.fireDate = calender?.dateFromComponents(dateComp!)
    notification.alertBody = alertBody
    notification.userInfo = ["day":"\(weekDay)","type":"\(type)"]

    UIApplication.sharedApplication().scheduleLocalNotification(notification)
}

【讨论】:

    【解决方案2】:

    **swift 4 的每周本地通知

    let content = UNMutableNotificationContent()
        content.title = "LocalNotification"
        content.subtitle = "notify"
        content.body = "I am Text"
        content.categoryIdentifier = "alarm"
        content.badge = 1
        content.sound = UNNotificationSound.default()
    

    // 配置重复日期。

        var dateComponents = DateComponents()
        dateComponents.calendar = Calendar.current
    
        dateComponents.weekday = 3
        dateComponents.hour = 13
        dateComponents.minute = 10
    
        // Create the trigger as a repeating event.
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
    
        // Create the request
        let uuidString = UUID().uuidString
        let request = UNNotificationRequest(identifier: uuidString,
                                            content: content, trigger: trigger)
    
        // Schedule the request with the system.
        let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.add(request) { (error) in
            if error != nil {
                // Handle any errors.
                print("************Error***************")
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多