如何设置按特定日期设置的本地用户通知

时间:2019-08-13 18:00:24

标签: ios swift xcode date unusernotificationcenter

我正在尝试设置本地用户通知。我有一组要在特定日期收到通知的数据。数据按照名称,信息和日期之类的信息分类。由于已经建立了其他代码,因此将数据中的数据格式化为整数。例如,如果日期为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语句来触发函数中的触发器,例如如果当前日期等于数据库中的下一个日期,那么我想触发一个通知;但是,我不知道如何调用与今天相同的datecomponent。我也不知道这是否真的行得通。

1 个答案:

答案 0 :(得分:0)

创建一个扩展程序,该扩展程序将从您的数据中创建日期成分:

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)
相关问题