如何每天重复一次 UNUserNotification?

Posted

技术标签:

【中文标题】如何每天重复一次 UNUserNotification?【英文标题】:How to repeat a UNUserNotification every day? 【发布时间】:2017-06-01 17:37:42 【问题描述】:

我正在尝试让用户安排通知以在每天的特定时间打开应用程序。到目前为止,我已经能够通过计算从现在到用户选择之间的时间来安排第一个通知,并在 X 秒内安排通知。但是,有没有一种方法可以让我将该通知设置为每天重复?如果您感到困惑,这是我的代码的一部分:

let newTime: Double = Double(totalDifference)
let notifTrigger = UNTimeIntervalNotificationTrigger(timeInterval: newTime, repeats: false)
let request = UNNotificationRequest(identifier: "openApp", content: notif, trigger: notifTrigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler:  error in
    if error != nil 
        print(error!)
        completion(false)
     else 
        completion(true)
    
)

非常感谢任何帮助

【问题讨论】:

不,我没有使用 UILocalNotification ***.com/a/42892780/2303865 的可能副本。您只需要删除 weekday 组件即可使其每天运行 【参考方案1】:

在你的情况下,改变这一行:

let notifTrigger = UNTimeIntervalNotificationTrigger(timeInterval: newTime, repeats: false)

let notifTrigger = UNTimeIntervalNotificationTrigger(timeInterval: newTime, repeats: true)

来自文档:

UNCalendarNotificationTrigger

在指定的日期和时间触发通知。你使用一个 UNCalendarNotificationTrigger 对象指定时间 通知的触发条件信息。日历 触发器可以触发一次,也可以触发多次。

NSDateComponents* date = [[NSDateComponents alloc] init];
date.hour = 8;
date.minute = 30; 
UNCalendarNotificationTrigger* trigger = [UNCalendarNotificationTrigger
                     triggerWithDateMatchingComponents:date repeats:YES];

斯威夫特:

var date = DateComponents()
date.hour = 8
date.minute = 30 
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

【讨论】:

底部代码正是我要找的,谢谢!【参考方案2】:

SWIFT3

    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: components.hour, minute: components.minute)
    let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: true)

【讨论】:

以上是关于如何每天重复一次 UNUserNotification?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 3中每天在特定时间触发本地通知

kettle定时每天同步数据如何避免重复

每天在设定的时间快速重复本地通知

在asp.net mvc中每天执行一次操作[重复]

Swift:在每天设定的时间之间创建重复的本地通知

schtasks /create(有一个每天运行并每小时重复的任务