每 14 天(每两周)触发一次 UILocalNotification Swift

2024-03-29

这个问题已经在SO上得到了回答。这是参考:

iOS 通知触发:每两周和/或每季度 https://stackoverflow.com/questions/41441124/ios-notification-trigger-fortnightly-and-or-quarterly

但到目前为止我已经尝试过:

var fortnightPart1 = DateComponents()
fortnightPart1.weekday = Calendar.current.component(.day, from: Sdate) //(Day..here Sunday)
fortnightPart1.weekdayOrdinal = 2 //= n == (nth Day in the month...here 2nd Sunday in every month month)
fortnightPart1.hour = Calendar.current.component(.hour, from: Sdate)
fortnightPart1.minute = Calendar.current.component(.minute, from: Sdate)
fortnightPart1.second = Calendar.current.component(.second, from: Sdate)
trigger = UNCalendarNotificationTrigger(dateMatching: fortnightPart1, repeats: repeate)

14天后我无法实现它。虽然,它来自随机数据。有人可以检查一下代码有什么问题吗?

Update:

根据您的建议(https://stackoverflow.com/a/46072497/7408802 https://stackoverflow.com/a/46072497/7408802),这是最终有效的代码!

//for 1st time notification
 let center = UNUserNotificationCenter.current()
 let content = UNMutableNotificationContent()
 content.title = title
 content.body = body
 content.categoryIdentifier = "\(id)"
 content.sound = UNNotificationSound.default()
 fortnightPart1.hour = Calendar.current.component(.hour, from: dateToFireON)
 fortnightPart1.minute = Calendar.current.component(.minute, from: dateToFireON)
 fortnightPart1.second = Calendar.current.component(.second, from: dateToFireON)
 trigger = UNCalendarNotificationTrigger(dateMatching: fortnightPart1, repeats: false)
 content.userInfo = ["NotificationID": id,"repeate":repeate,"resedule":true]
 let request = UNNotificationRequest(identifier: "\(id)", content: content, trigger: trigger)
 center.add(request)

//when first notification triggered, we need to set another for 14 days repeat in UIApplicationDelegate
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
    let center = UNUserNotificationCenter.current()
    let content = UNMutableNotificationContent()
    content.title = notification.alertTitle!
    content.body = notification.alertBody!
    content.categoryIdentifier = "\(reminderId)"
    content.userInfo = ["NotificationID": reminderId,"repeate":true,"resedule":false]
    content.sound = UNNotificationSound.default()
    let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 1209600, repeats: true)
    let request = UNNotificationRequest(identifier:"\(reminderId)", content: content, trigger: trigger)
    center.add(request, withCompletionHandler: nil)
}

使用简单的方法无法实现您想要实现的目标UNNotificationTriggers。要每两周重复一次通知,您需要设置UNTimeIntervalNotificationTrigger with a timeInterval相当于两周。但是,您无法指定时间间隔触发器的第一个触发日期,一旦您安排它,它就会开始“滴答”。

另一方面,UNCalendarNotificationTrigger可以安排在特定日期触发,但这样做的问题是您无法为通知触发器指定自定义重复间隔。

您需要首先设置一个不重复的UNCalendarNotificationTrigger在用户指定的日期,一旦发送通知,设置一个UNTimeIntervalNotificationTrigger每两周触发一次。这种方法的唯一问题是用户也会在指定日期看到通知,而不仅仅是此后每两周一次。但是,您可以通过将通知设置为在指定日期后两周发送来规避此问题,这样用户就不会注意到通知之间的差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每 14 天(每两周)触发一次 UILocalNotification Swift 的相关文章

随机推荐

  • 为什么GO中slice的内容没有改变?

    我认为在GO语言中 切片是通过引用传递的 但为什么下面的代码没有改变切片c的内容呢 我错过了什么吗 谢谢 package main import fmt func call c int c append c 1 fmt Println c
  • .net 计时器有多可靠?

    我正在考虑在 Windows 服务中使用 System Timers Timer 我想知道它们的可靠性和准确性如何 尤其 对于它们的运行频率有任何保证吗 当处理器或内存过载时会发生什么 在这种情况下 ElapsedEventArgs Sig
  • Ninject 当 T 型祖先时绑定

    我有一个大致如下所示的依赖链 public class CarSalesBatchJob public CarSalesBatchJob IFileProvider fileProvider public class MotorcycleS
  • Scala 中 Await.result 和 futures.onComplete 之间的区别

    我使用以下两个代码片段在多个线程中执行代码 但我的行为有所不同 片段 1 val futures Future sequence Seq f1 f2 f3 f4 f5 futures onComplete case Success valu
  • Silverlight 中使用安全关键构造函数子类化透明类型的安全规则

    在Silverlight v4 0 安全模型中 肖恩 法卡斯 说 http blogs msdn com b shawnfa archive 2007 05 11 silverlight security iii inheritance a
  • 在 Moto 中使用 Boto3(版本 1.8 或更高版本)时如何模拟 AWS 调用

    我有一个用 python 编写的 API 可以调用 AWS 服务 特别是 sqs s3 和 dynamodb 我正在尝试为 API 编写单元测试 并且想模拟对 AWS 的所有调用 我对 moto 作为模拟这些服务的一种方式进行了大量研究 但
  • 跳转滚动并重定向到博客上同一博客的另一个页面

    我有一个博客 如果有人点击特定链接我想做 他应该在同一页面上的特定点跳转滚动 然后几秒钟后 他应该自动重定向到同一博客的其他页面 重定向到其他博客 请也给出示例网站地址 我有这个代码 脚本就像 function jumpScroll win
  • Spark Dataframe Write to CSV 在独立集群模式下创建 _temporary 目录文件

    我在跑步spark job在有 2 个工作节点的集群中 我使用下面的代码 spark java 将计算的数据帧作为 csv 保存到工作节点 dataframe write option header false mode SaveMode
  • 如何克隆案例类实例并仅更改 Scala 中的一个字段?

    假设我有一个案例类 代表不同社交网络上的人物角色 该类的实例是完全不可变的 并保存在不可变的集合中 最终由 Akka actor 进行修改 现在 我有一个包含许多字段的案例类 我收到一条消息 说我必须更新其中一个字段 如下所示 case c
  • Python 2.7:从文本中检测表情符号

    我希望能够检测文本中的表情符号并查找它们的名字 我没有使用 unicodedata 模块 我怀疑我不是 了解 UTF 8 约定 我猜想我需要将我的文档加载为 utf 8 然后将 unicode 字符串 分解为 unicode 符号 迭代这些
  • 调用类型参数的方法

    有没有办法做这样的代码 class GenericClass
  • iOS:如何注册推送通知?

    我正在尝试按照 Ray Wenderlich 的指南为我的 iOS 5 应用程序实现推送通知 http www raywenderlich com 3443 apple push notification services tutorial
  • 如何过滤chrome的devtool控制台历史记录

    在 bash 中 我使用历史搜索向前和历史搜索向后功能来允许我输入要运行的命令的几个字符 然后按向上箭头循环浏览历史记录中与这些字符匹配的项目 我想要 chrome devtool 控制台也有同样的东西 我经常使用向上箭头来循环浏览我的历史
  • PHP 相等(== 双等于)和恒等(=== 三等)比较运算符有何不同?

    有什么区别 and 松散究竟如何 比较工作 具体如何严格 比较工作 有哪些有用的例子 之间的区别 and 松散的区别 等于运算符和严格运算符 相同的运算符在中得到了准确的解释manual http php net manual en lan
  • iOS 将大数字转换为较小格式

    如何将所有超过 3 位的数字转换为 4 位或更少的数字 这正是我的意思 10345 10 3k 10012 10k 123546 123 5k 4384324 4 3m 四舍五入并不完全重要 但却是一个额外的优点 我已经研究过 NSNumb
  • 我如何在 Skype 上玩 google?

    此代码用于在 Skype 上向某人发送消息 但我不知道如何设置https play google com store apps details id com skype raider https play google com store
  • 如何从Excel电子表格中读取数据?

    在我正在工作的一个项目中 客户在最后一刻要求我添加从 Excel 电子表格导入数据的功能 他发送给我的示例具有 xlsx 扩展名 因此我假设它们来自 Excel 2010 但如果可能的话 我希望支持所有版本 有没有一种快速 简单的方法可以从
  • Python - 循环多维字典[重复]

    这个问题在这里已经有答案了 如果我解释我认为我在做什么 我希望有人能解释我哪里出错了 我有以下字典 ls The Wolf Gift 13 cover V Books Anne Rice The Wolf Gift 13 cover jpg
  • Linux 上的调试符号是否加载到内存中?

    从可执行文件 或共享库 中剥离调试符号是否会减少内存使用量 我知道它减少了磁盘文件的大小 我感兴趣的是实际使用的 RAM 德雷珀的论文http www akkadia org drepper dsohowto pdf http www ak
  • 每 14 天(每两周)触发一次 UILocalNotification Swift

    这个问题已经在SO上得到了回答 这是参考 iOS 通知触发 每两周和 或每季度 https stackoverflow com questions 41441124 ios notification trigger fortnightly