【问题标题】:iOS: Limit local notifications to a certain time frame?iOS:将本地通知限制在某个时间范围内?
【发布时间】:2017-10-10 10:45:00
【问题描述】:

我正在开发一个使用本地通知的应用程序,这些通知会以用户选择的间隔(5 到 60 分钟)重复。

我想让用户也可以选择特定的时间范围,以便应用仅在此时间范围内触发通知。我正在考虑使用 NSDate 和某种条件语句,其中仅当当前时间在用户选择的时间范围内时才会触发通知。

你认为这会奏效还是我在监督什么?

【问题讨论】:

    标签: ios swift nsdate uilocalnotification nsdatecomponents


    【解决方案1】:

    您可以为此使用UNCalendarNotificationTrigger

    在指定的日期和时间触发通知。

    official documentation.

    日历触发器也可以重复,所以它应该可以满足您的目的。

    【讨论】:

    • 我认为这不符合我的目的,因为它只在一个特定的时间触发,对吧?但是,我希望用户能够选择 a) 他们希望收到通知的频率(例如“每 20 分钟”)和 b) 他们希望在哪个时间范围内收到通知(例如“上午 9 点到 12 点之间”)因此对于本示例,用户将在上午 9 点到 12 点之间每 20 分钟收到一次通知。
    • 正如我所说,UNCalendarNotificationTrigger 可以重复,因此对于您的示例,您可以在上午 9 点到 12 点之间每 20 分钟设置一次触发器,并每天重复一次,或者您可以只设置一个,每 20 分钟重复一次,然后在到达 12AM 时取消它。
    • 好的,谢谢。不过,我仍然不确定如何结合这两个功能。如果我像这样设置 UNCalendarNotificationTrigger let trigger = UNCalendarNotificationTrigger.init(dateMatching: date, repeats: true) 它只会在特定时间触发而不重复,例如之后每20分钟对吗?但我猜只是简单地添加TimeInterval 不会这样做?
    • 这取决于日期。如果您查看我链接的官方文档,它会告诉您日期可以是什么以及它如何重复。您想在哪里添加 TimeInterval 以及用于什么目的?
    • 好吧,我需要一些代码,以便它在选定的时间间隔(“每 20 分钟”)内重复通知。目前我正在为此使用 UNTimeIntervalNotificationTrigger 。如果我使用这样的while循环来做呢? while chosenHourStart >= date.hour || chosenHourEnd <= date.hour { //will add the code for UNTimeIntervalNotificationTrigger here }"chosenHourStart" 和 "chosenHourEnd" 将是用户选择的变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多