我有一个问题,当应用程序处于后台时,NSCalendarDayChanged的观察者是否可以发挥作用。 下面的代码只有在1)日期改变和2)应用程序随后被带到前台时才会触发。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(calendarDayDidChange(notification:)), name: .NSCalendarDayChanged, object: nil)
}
@objc func calendarDayDidChange(notification : NSNotification) {
//Do something
print("The date has changed. Uploading yesterday's data...")
}
}
来自文档。https:/developer.apple.comdocumentationfoundationnsnotificationname1408062-nscalendardaychanged。
如果设备在改变日期时处于睡眠状态,则会在唤醒时发布该通知。如果裝置已睡了多天,則在喚醒時只會發佈一次通知。无法保证观察者何时收到该通知的及时性。因此,您不应该依赖此通知在任何精确的时间发布或收到。