gpt4 book ai didi

ios - 尝试在 x 天内同时安排 x 数量的通知

转载 作者:行者123 更新时间:2023-11-29 13:52:07 28 4
gpt4 key购买 nike

这是用来配置通知的函数。该索引用于增加日期,也用于更改通知的标识符。

func configNotification(someData: SomeDataType, index: Int) {
guard let notificationTime = getNotificationTimeUserDefaults(),
let date = Calendar.current.date(byAdding: .day, value: index, to: notificationTime) else { return }
let content = UNMutableNotificationContent()
content.title = someData.title
content.subtitle = someData.subtitle
content.body = someData.content
content.badge = index as NSNumber
content.sound = UNNotificationSound.default
let tiggerDate = Calendar.current.dateComponents([.weekday,.hour,.minute], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: tiggerDate, repeats: false)
let identifier = "UYLLocalNotification\(index)"
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
center.add(request, withCompletionHandler: { (_) in })
}

然后为了安排 x 数量的通知,我像这样调用该函数

func scheduleNotifications(numberOfNotifications: Int) {
for i in numberOfNotifications {
configNotification(someData: getSomeData(), index: i)
}
}

我希望在用户设置的下一个预定时间只收到一个通知。但是,当我这样做时,我会在预定时间收到多个通知。

用来获取当前用户通知时间的函数是

func getNotificationTimeUserDefaults() -> Date? {
var date: Date?
if UserDefaults.standard.object(forKey: udNotificatonTime) != nil,
let notificationTime = UserDefaults.standard.value(forKey: udNotificatonTime) {
date = notificationTime as? Date
}
return date
}

用户选择通知时间的日期选择器是

lazy var datePicker: UIDatePicker = {
let p = UIDatePicker()
p.translatesAutoresizingMaskIntoConstraints = false
p.setValue(Theme.current.textColor, forKeyPath: "textColor")
p.backgroundColor = .clear
p.datePickerMode = .time
if let date = getNotificationTimeUserDefaults() {
p.date = date
}
p.addTarget(self, action: #selector(dateChanged), for: .valueChanged)
return p
}()

然后最后设置用户默认通知时间

@objc func dateChanged(p: UIDatePicker) {
UserDefaults.standard.set(p.date, forKey: Constants.Strings.udNotificatonTime)
displayNotificationTime()
scheduleNotifications(numberOfNotifications: x)
}

同样,我只是想在 x 天内同时安排 x 条通知。任何帮助谢谢

最佳答案

我认为您需要像这样在 UNUserNotificationCenter 上使用 getPendingNotificationRequests 方法来验证您的通知。

UNUserNotificationCenter.current().getPendingNotificationRequests { [weak self] (requests) in
print(requests)
}

在这里您可以调试所有针对identifiercalendar triggerWeekDay 的通知。

注意事项:

通知(创建/更新)取决于您设置的Identifier。如果您为新通知设置相同的标识符,将更新具有原始标识符的通知。因此,请确保您按预期行事。

因此,使用此方法,您可以验证收到多个通知的原因。

希望对您有所帮助。 🙂

关于ios - 尝试在 x 天内同时安排 x 数量的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124587/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com