如何从特定时间开始快速发送本地通知UNTimeInterval [iOS]

时间:2019-07-16 15:15:18

标签: ios swift unusernotificationcenter unnotificationrequest unusernotification

我想从特定时间开始每8小时发送一次本地通知。 例如,现在我们是早上10点,但是我希望您从12点开始每8小时通知我一次。

我有此代码:

let content: UNMutableNotificationContent = UNMutableNotificationContent()
content.title = "Alert!"
content.body = "Alert"
content.categoryIdentifier = "alarm"

let request = UNNotificationRequest(
    identifier: "AA",
    content: content,
    trigger: UNTimeIntervalNotificationTrigger(timeInterval: 8*3600, repeats: false)
)

let action = UNNotificationAction(identifier: "remindLater", title: "remind_me_later".localized(), options: [])
let category = UNNotificationCategory(identifier:"pill-alarm", actions: [action], intentIdentifiers: [], options: [])

UNUserNotificationCenter.current().setNotificationCategories([category])
UNUserNotificationCenter.current().add(request)

2 个答案:

答案 0 :(得分:0)

首先,您需要创建一个触发日期而不是时间间隔

赞:

let date = Date(timeIntervalSinceNow:  8*3600 + extraTime) // extraTime = time interval between 8 to 12
let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: date)

现在在请求中使用触发日期

let request = UNNotificationRequest(
    identifier: "AA",
    content: content,
    trigger: UNTimeIntervalNotificationTrigger(timeInterval: triggerDate, repeats: false)
)

更多参考信息:https://useyourloaf.com/blog/local-notifications-with-ios-10/

答案 1 :(得分:0)

所以我遇到了同样的问题,我最终要做的是:

比方说,您每8个小时有一次闹钟,从12点开始,现在是10AM 好吧,我做了一些计算并创建了一些重复的通知:

第一个通知将在每天12点发布 第二次通知将在每天20点进行, 第三次通知将在每天4点开始。

您可以这样创建它们:

var date = DateComponents()
date.hour = hour
date.minute = minutes

let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

let request = UNNotificationRequest(identifier: notificationId, content: content, trigger: trigger)

center.add(request) { (error) in
    if let error = error {
        print("Error \(error.localizedDescription)")
    }
}

您需要为其设置不同的标识符,因此您可以对它们进行第一,第二,第三或数字化处理。如果您需要在某个时候取消它们,这将为您提供帮助。