gpt4 book ai didi

ios - 使用 Swift 3 为一组日期安排通知

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:29 25 4
gpt4 key购买 nike

我有一个包含我的日期的数组。我想在那些日子的早上 6.30 安排通知。

我关注了 appcoda tutorial这有助于根据日期选择器的输入安排通知,这很棒,但我不太确定如何调用我的函数来仅安排给定日期的通知。

所以我的问题是如何以及在何处调用该函数?

  • 天数是连续的天数
  • 我可以给函数一个开始日期并用数组中的项目数重复它吗?

下面是我的函数:

    func scheduleNotification(at date: Date) {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: 6, minute: 30)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)

let content = UNMutableNotificationContent()
content.title = "Advent Calendar"
content.body = "Just a reminder to open your present!"
content.sound = UNNotificationSound.default()

let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().add(request) {(error) in
if let error = error {
print("Uh oh! We had an error: \(error)")
}
}
}

最佳答案

对,所以在咨询了开发人员之后@gklka我决定使用一个重复 24 次的简单 for 循环)并将索引传递给函数的 day 属性,我在其中预先配置了小时、分钟、年和月,如下所示:

func scheduleNotification(day: Int) {

var date = DateComponents()
date.year = 2016
date.month = 11
date.day = day
date.hour = 6
date.minute = 30

let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: false)
}

和 for 循环:

for index in 1...24 {
scheduleNotification(day: index)
}

因为我在 AppDelegate 中设置了所有内容,所以我调用了 didFinishLaunchingWithOptions 中的函数

12 月 1 日更新

所以我让一切保持原样,但早上没有通知。 😔。我查看了我的代码以找出原因。有 2 个问题。

  1. 我的函数中有一行代码会在遍历我的循环时删除之前设置的任何通知,因此我将下面的代码行注释掉了,但事情仍然没有按预期工作。 UNUserNotificationCenter.current().removeAllPendingNotificationRequests()

  2. 我发现我已经用相同的 requestIdentifier 安排了我的通知,这基本上让我在最后一天只收到了​​ 1 个通知。我只是通过字符串插值在自定义 ID 变量的末尾添加了索引,如下所示:let requestId = "textNotification\(day)"

关于ios - 使用 Swift 3 为一组日期安排通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886790/

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