gpt4 book ai didi

swift - 对于 iOS 10,每周特定的一天重复 UserNotification

转载 作者:IT王子 更新时间:2023-10-29 05:50:50 24 4
gpt4 key购买 nike

我正在为 iOS 10 开发本地通知调度模块,它会重复本地通知,例如每周日或每周一等。假设我为这个日期安排了一个通知,它是 2016-12-27 10:53:22 +0000 并使用 UNCalendarNotificationTrigger 并且重复值等于 true,通知被触发对于那个日期的人,下周不会在同一时间重复。

这可能是什么原因?以及如何在 iOS 10 中每周重复特定的一天。

下面是创建本地通知的代码:

 let content = UNMutableNotificationContent()
content.title = object.title
content.body = object.body
content.sound = UNNotificationSound.default()

let date = object.fireDate
let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: date as Date)

let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate,
repeats: true)
// Swift
let identifier = object.id
let request = UNNotificationRequest(identifier: identifier,
content: content, trigger: trigger)
localNotification.add(request, withCompletionHandler: { (error) in

if error != nil {
// Something went wrong
print(error!)

}else {

print("Reminder \(object.id) has been added successfully at \(object.fireDate)")
}
})

更新:

我还发现在该日期触发通知后,我会检查是否不存在更多未决通知或检查是否已重新安排通知。实际上 repeat 等于 true,下周还没有安排。

UNUserNotificationCenter.current().getPendingNotificationRequests(completionHandler: { (notficiations) in

for localNotification in notficiations {

print(localNotification)

}
})

结果是:

<UNNotificationRequest: 0x174223ca0; identifier: A1, content: <UNNotificationContent: 0x1742e2980; title: My Title, subtitle: (null), body: My Body, categoryIdentifier: , launchImageName: , peopleIdentifiers: (
), threadIdentifier: , attachments: (
), badge: (null), sound: <UNNotificationSound: 0x1740b1820>, hasDefaultAction: YES, shouldAddToNotificationsList: YES, shouldAlwaysAlertWhileAppIsForeground: NO, shouldLockDevice: NO, shouldPauseMedia: NO, isSnoozeable: NO, fromSnooze: NO, darwinNotificationName: (null), darwinSnoozedNotificationName: (null), trigger: <UNCalendarNotificationTrigger: 0x174223cc0; dateComponents: <NSDateComponents: 0x17415e140>
Calendar Year: 2016
Month: 12
Day: 27
Hour: 14
Minute: 46
Second: 15, repeats: YES>>

我不知道它是否真的是 iOS 中的错误。

最佳答案

触发日期格式不适合在一周中的某一天重复通知。您当前的触发日期组成部分包括年、月、日等,因此此通知会在每年的特定月份和日期重复。更改触发日期如下所述,以在一周中的某一天重复通知。

 let triggerDate =  Calendar.current.dateComponents([.weekday,.hour,.minute], from: date as Date)

关于swift - 对于 iOS 10,每周特定的一天重复 UserNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41330358/

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