如何设置由特定日期触发的本地用户通知
How do I set up local user notifications that are set off by certain dates
我正在尝试设置本地用户通知。我有一组数据,希望在特定日期收到通知。数据按 class 排序,包含名称、信息和日期等信息。因为其他的代码,我已经建立了,我把data里面的数据格式化成一个整数。例如,如果日期是 5 月 5 日,则关联的日期变量是 505,或者如果日期是 12 月 11 日,则关联的日期变量是 1211。
如何使用我保存在数据库中的变量创建在指定日期触发本地用户通知的函数?
以下代码按日期对数据进行排序,然后将下一个数据放在第0位。
func userNotification() {
let content = UNMutableNotificationContent()
let allDiscounts = discountBank()
let dateClass = theDate()
var my1 = 0
var myList = [Int]()
for i in 0...allDiscounts.list.count-1 {
if dateClass.todaysDate > allDiscounts.list[i].dateApplied {
my1 = i+1
}
}
myList.append(my1)
for i in my1+1...allDiscounts.list.count-1{
myList.append(i)
}
if my1>=1{
for i in 0...my1-1{
myList.append(i)
}
}
print(myList)
content.title = "Todays Deal at \(allDiscounts.list[myList[0]].businessName)"
content.body = allDiscounts.list[myList[0]].theDeal
content.sound = UNNotificationSound.default
let trigger = UNCalendarNotificationTrigger(dateMatching: , repeats: false)
let request = UNNotificationRequest(identifier: "TestIdentifier", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
我打算在函数中使用 if 语句来触发触发器,比如如果当前日期等于数据库中的下一个日期,那么我想触发一个通知;但是,我不知道如何调用等于今天的日期组件。我也不知道这是否真的有效。
创建一个扩展程序,它将根据您的数据创建日期组件:
extension Int {
var month: Int {
return self / 100
}
var day: Int {
return self % 100
}
}
根据日期组件创建通知触发器:
let date = allDiscounts.list[myList[0]].dateApplied
let components = DateComponents(month: date.month,
day: date.day,
hour: 10, minute: 00, second: 00)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
let identifier = "\(date)"
let content = UNNotificationContent(
let request = UNNotificationRequest(identifier: identifier,
content: content,
trigger: trigger)
我正在尝试设置本地用户通知。我有一组数据,希望在特定日期收到通知。数据按 class 排序,包含名称、信息和日期等信息。因为其他的代码,我已经建立了,我把data里面的数据格式化成一个整数。例如,如果日期是 5 月 5 日,则关联的日期变量是 505,或者如果日期是 12 月 11 日,则关联的日期变量是 1211。
如何使用我保存在数据库中的变量创建在指定日期触发本地用户通知的函数?
以下代码按日期对数据进行排序,然后将下一个数据放在第0位。
func userNotification() {
let content = UNMutableNotificationContent()
let allDiscounts = discountBank()
let dateClass = theDate()
var my1 = 0
var myList = [Int]()
for i in 0...allDiscounts.list.count-1 {
if dateClass.todaysDate > allDiscounts.list[i].dateApplied {
my1 = i+1
}
}
myList.append(my1)
for i in my1+1...allDiscounts.list.count-1{
myList.append(i)
}
if my1>=1{
for i in 0...my1-1{
myList.append(i)
}
}
print(myList)
content.title = "Todays Deal at \(allDiscounts.list[myList[0]].businessName)"
content.body = allDiscounts.list[myList[0]].theDeal
content.sound = UNNotificationSound.default
let trigger = UNCalendarNotificationTrigger(dateMatching: , repeats: false)
let request = UNNotificationRequest(identifier: "TestIdentifier", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
我打算在函数中使用 if 语句来触发触发器,比如如果当前日期等于数据库中的下一个日期,那么我想触发一个通知;但是,我不知道如何调用等于今天的日期组件。我也不知道这是否真的有效。
创建一个扩展程序,它将根据您的数据创建日期组件:
extension Int {
var month: Int {
return self / 100
}
var day: Int {
return self % 100
}
}
根据日期组件创建通知触发器:
let date = allDiscounts.list[myList[0]].dateApplied
let components = DateComponents(month: date.month,
day: date.day,
hour: 10, minute: 00, second: 00)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
let identifier = "\(date)"
let content = UNNotificationContent(
let request = UNNotificationRequest(identifier: identifier,
content: content,
trigger: trigger)