.NSCalendarDayChanged只有在应用程序处于前景时才被观察到。

问题描述 投票:0回答:1

我有一个问题,当应用程序处于后台时,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...")
    }

}
swift background nscalendar nsnotifications
1个回答
0
投票

来自文档。https:/developer.apple.comdocumentationfoundationnsnotificationname1408062-nscalendardaychanged。

如果设备在改变日期时处于睡眠状态,则会在唤醒时发布该通知。如果裝置已睡了多天,則在喚醒時只會發佈一次通知。无法保证观察者何时收到该通知的及时性。因此,您不应该依赖此通知在任何精确的时间发布或收到。

© www.soinside.com 2019 - 2024. All rights reserved.