swift – UNTimeIntervalNotificationTrigger nextTriggerDate()
发布时间:2020-12-14 04:42:49 所属栏目:百科 来源:网络整理
导读:我正在更新我的本地通知以使用iOS 10,我遇到了一个问题,我认为nextTrigger函数返回NOT“触发条件将满足的下一个日期.”而是返回当前日期时间的任何内容.加上您最初设置UNTimeInvervalNotificationTrigger的内容. 因此,如果您将触发器设置为在60秒内关闭,那么
我正在更新我的本地通知以使用iOS 10,我遇到了一个问题,我认为nextTrigger函数返回NOT“触发条件将满足的下一个日期.”而是返回当前日期时间的任何内容.加上您最初设置UNTimeInvervalNotificationTrigger的内容.
因此,如果您将触发器设置为在60秒内关闭,那么从文档中我希望当我调用nextTriggerDate()时,我会让它返回当我将触发器设置为60秒时的日期时间.因此,如果我将其设置为12:00:00,我希望nextTriggerDate()将是12:01:00.然而,我所经历的是,无论当前日期是60秒,它都会返回. 我编写了一个调度UNTimeIntervalNotificationTrigger的示例,然后每秒打印出nextTriggerDate().当我运行它时,我每秒都会获得一个新的nextTriggerDate.像这样: //Optional(2016-11-03 21:26:31 +0000) //Optional(2016-11-03 21:26:32 +0000) //Optional(2016-11-03 21:26:33 +0000) //Optional(2016-11-03 21:26:34 +0000) //Optional(2016-11-03 21:26:35 +0000) //Optional(2016-11-03 21:26:36 +0000) 我用苹果打开了TSI,但是……你知道……这需要一段时间.所以我想我会看到这里是否有人有任何见解.我怀疑这是一个错误,如果我得到更多信息,我会更新这个. 这是我用来说明问题的代码: import UIKit import UserNotifications class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { @IBOutlet weak var setButton: UIButton! @IBOutlet weak var timePicker: UIPickerView! weak var timer: Timer? override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func setButtonAction(_ sender: UIButton) { var mySecond = pickerSelection // build notification let content = UNMutableNotificationContent() content.title = "Title of notification" content.body = "This is the body of the notification" content.sound = UNNotificationSound.default() content.categoryIdentifier = "myCategory" let trigger = UNTimeIntervalNotificationTrigger(timeInterval: Double(mySecond),repeats: false) let request = UNNotificationRequest(identifier: "test notification",content: content,trigger: trigger) UNUserNotificationCenter.current().add(request) {(error) in if let error = error { print("Uh oh! We had an error: (error)") } } self.timer = Timer.scheduledTimer(timeInterval: 1,target: self,selector: #selector(self.tick),userInfo: nil,repeats: true) } let pickerData = [":00",":01",":02",":03",":04",":05",":06",":07",":08",":09",":10",":11",":12",":13",":14",":15",":16",":17",":18",":19",":20",":21",":22",":23",":24",":25",":26",":27",":28",":29",":30",":31",":32",":33",":34",":35",":36",":37",":38",":39",":40",":41",":42",":43",":44",":45",":46",":47",":48",":49",":50",":51",":52",":53",":54",":55",":56",":57",":58",":59"] var pickerSelection = 0 override func viewDidLoad() { super.viewDidLoad() self.timePicker.dataSource = self self.timePicker.delegate = self self.timePicker.selectRow(pickerSelection,inComponent: 0,animated: false) } // The number of columns of data func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } // The number of rows of data func pickerView(_ pickerView: UIPickerView,numberOfRowsInComponent component: Int) -> Int { return pickerData.count } // The data to return for the row and component (column) that's being passed in func pickerView(_ pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String? { return pickerData[row] } func pickerView(_ pickerView: UIPickerView,viewForRow row: Int,forComponent component: Int,reusing view: UIView?) -> UIView { let pickerLabel = UILabel() let titleData = pickerData[row] let myTitle = NSAttributedString(string: titleData,attributes: [NSFontAttributeName:UIFont(name: "Futura",size: 44.0)!]) pickerLabel.attributedText = myTitle pickerLabel.textAlignment = .center return pickerLabel } func pickerView(_ pickerView: UIPickerView,didSelectRow row: Int,inComponent component: Int) { pickerSelection = row } func tick() { let center = UNUserNotificationCenter.current() center.getPendingNotificationRequests(completionHandler: { (scheduledLocalNotifications) in for localNotice in scheduledLocalNotifications { var localTrigger = localNotice.trigger as! UNTimeIntervalNotificationTrigger var localTime = localTrigger.nextTriggerDate() // ** This output shows something like this: //Optional(2016-11-03 21:26:31 +0000) //Optional(2016-11-03 21:26:32 +0000) //Optional(2016-11-03 21:26:33 +0000) //Optional(2016-11-03 21:26:34 +0000) //Optional(2016-11-03 21:26:35 +0000) //Optional(2016-11-03 21:26:36 +0000) print("(localTime)") } }) } } 解决方法
从苹果DTS回来后,他被告知我所描述的功能是如何设计的.虽然我认为文档解释的方式有所不同,但他们告诉我“鉴于实施,文档是乐观的.”无论如何,我通过跟踪代码中的开火日期来解决它.我希望这个答案可以帮助那些遇到同样问题的人.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |