重复本周特定日期的本地通知(Swift 3 IOS 10)

重复本周特定日期的本地通知(Swift 3 IOS 10),第1张

概述我正在尝试为一周中的特定日期(例如星期一,星期三等)安排本地通知,然后每周重复一次. 这是用于设置通知的屏幕的外观: 用户可以选择通知时间和重复日期. 我调度单个非重复通知的方法如下所示: static func scheduleNotification(reminder: Reminder) { // Setup notification content. let content 我正在尝试为一周中的特定日期(例如星期一,星期三等)安排本地通知,然后每周重复一次.
这是用于设置通知的屏幕的外观:

用户可以选择通知时间和重复日期.

我调度单个非重复通知的方法如下所示:

static func scheduleNotification(reminder: Reminder) {    // Setup notification content.    let content = UNMutableNotificationContent()    //content.Title = Nsstring.localizedUserNotificationString(forKey: "Reminder",arguments: nil)    content.body = Nsstring.localizedUserNotificationString(forKey: reminder.reminderMessage,arguments: nil)    content.sound = UNNotificationSound.default()    // Configure the triger for specifIEd time.    //     let dateComponentes = reminder.dateComponents    // Todo: Configure repeating alarm    // For the testing purposes we will not repeat the reminder    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponentes,repeats: false)    // Create the request object.    let request = UNNotificationRequest(IDentifIEr: "\(reminder.reminderID)",content: content,trigger: trigger)    // Schedule the request.    let notificationCenter = UNUserNotificationCenter.current()    notificationCenter.add(request) { (error: Error?) in        if let theError = error {            print(theError.localizedDescription)        }    }}

日期组件从UIDatePicker小部件中提取并存储在提醒类中:

let date = reminderTimeDatePicker.date.addingTimeInterval(60 * 60 * 24 * 7)let components = Calendar.current.dateComponents([.weekday,.hour,.minute],from: date)...reminder.dateComponents = components

我有一个数组selectedDays [Int](作为提醒类的属性)来保存通知应该触发的星期几的信息.

如何在一周中的特定日期安排通知以及如何每周重复一次?

即使是一条评论也会有所帮助,并提前感谢您.

您可以使用以下函数从所选的选择器值中获取日期:
//Create Date from picker selected value.    func createDate(weekday: Int,hour: Int,minute: Int,year: Int)->Date{        var components = DateComponents()        components.hour = hour        components.minute = minute        components.year = year        components.weekday = weekday // sunday = 1 ... saturday = 7        components.weekdayOrdinal = 10        components.timeZone = .current        let calendar = Calendar(IDentifIEr: .gregorian)        return calendar.date(from: components)!    }    //Schedule Notification with weekly bases.    func scheduleNotification(at date: Date,body: String,Titles:String) {        let triggerWeekly = Calendar.current.dateComponents([.weekday,.minute,.second,],from: date)        let trigger = UNCalendarNotificationTrigger(dateMatching: triggerWeekly,repeats: true)        let content = UNMutableNotificationContent()        content.Title = Titles        content.body = body        content.sound = UNNotificationSound.default()        content.categoryIDentifIEr = "todoList"        let request = UNNotificationRequest(IDentifIEr: "textNotification",trigger: trigger)        UNUserNotificationCenter.current().delegate = self        //UNUserNotificationCenter.current().removeAllPendingNotificationRequests()        UNUserNotificationCenter.current().add(request) {(error) in            if let error = error {                print("Uh oh! We had an error: \(error)")            }        }    }

从选择器传递选择器小时,分钟和年份中获取值,选定的工作日为(星期日= 1,星期一= 2,星期二= 3,星期三= 4,星期四= 5,星期五= 6,星期六= 7) createDate(工作日:Int,小时:Int,分钟:Int,年份:Int)在每周基础上获取通知开火日期,并在获取日期调用函数func scheduleNotification(日期:日期,正文:字符串,标题:字符串)之后安排通知.

总结

以上是内存溢出为你收集整理的重复本周特定日期的本地通知(Swift 3 IOS 10)全部内容,希望文章能够帮你解决重复本周特定日期的本地通知(Swift 3 IOS 10)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1032530.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存