nextTriggerDate() 不返回“预期”值,是否有其他方法来获取重复本地通知的下一个触发日期?

2023-12-07

在我的应用程序中,我允许用户安排重复的本地通知。我遇到的问题(基于环顾四周的任何其他问题)是 nextTriggerDate() 始终将其返回值基于当前时间而不是安排通知的时间。我看到了在通知的 userInfo 中存储“日期”值的建议,但从通知的重复方式来看,似乎无法在每次通知触发时保持该日期值的准确性。有没有办法获得重复本地通知的实际触发日期?

func getNotifications(completion: @escaping (Bool)->()){
    notificationArray.removeAll()

    center.getPendingNotificationRequests { (notifications) in
        print("Count: \(notifications.count)")
        if notifications.count <= 0{
            completion(true)
            return
        }
        for item in notifications {
            var nextTrigger = Date()

            if let trigger = item.trigger as? UNTimeIntervalNotificationTrigger{

                nextTrigger = trigger.nextTriggerDate()!

            }else if let trigger = item.trigger as? UNCalendarNotificationTrigger{

                nextTrigger = trigger.nextTriggerDate()!
            }
        }
    }
    completion(true)
}

确认的。我运行了这段代码:

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 120, repeats: true)
print("scheduling at", Date())
DispatchQueue.main.asyncAfter(deadline: .now()+15) {
    print("checking at", Date())
    UNUserNotificationCenter.current().getPendingNotificationRequests {
        arr in let arr = arr
        if let req = arr[0].trigger as? UNTimeIntervalNotificationTrigger {
            let fd = req.nextTriggerDate()
            print("trigger date", fd as Any)
        }
    }
}
// ... proceed to configure and schedule the notification

我还配置了我的用户通知中心委托以在前台接收通知并打印时间。

这是我在控制台中看到的内容:

scheduling at 2018-08-01 03:40:36 +0000
checking at 2018-08-01 03:40:51 +0000
trigger date Optional(2018-08-01 03:42:51 +0000)
received notification while active 2018-08-01 03:42:36 +0000

因此,触发日期报告为 2 分钟后当我检查时,但通知实际上是在 2 分钟后触发的当我安排的时候.

我会把它描述为一个错误!

我对你原来的问题的一个不同意见是,我得到了完全相同的结果non-重复UNTimeIntervalNotificationTrigger:

scheduling at 2018-08-01 03:45:50 +0000
checking at 2018-08-01 03:46:06 +0000
trigger date Optional(2018-08-01 03:48:06 +0000)
received notification while active 2018-08-01 03:47:50 +0000

UNTimeIntervalNotificationTrigger 还有一个timeInterval属性,但即便如此,除非我们知道通知最初安排的时间,而且 UNNotificationRequest 无法提供任何方法来查明这一点。

(为了确定起见,我推迟了检查,直到重复通知触发了几次,但结果是相同的:nextTriggerDate明确添加了timeInterval to now而不是报告下次触发通知的时间。)

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

nextTriggerDate() 不返回“预期”值,是否有其他方法来获取重复本地通知的下一个触发日期? 的相关文章

随机推荐

  • 嵌套集模型 PHP 库

    您好 我需要使用嵌套集模型来管理我网站上的产品类别 有谁知道一些好的预构建 PHP 库用于处理 MySQL 中的嵌套集 你可以尝试 Baobab 这是我最近发布的一个库 http www sideralis org baobab
  • 使用独立 NDK 工具链构建协议缓冲区

    我在使用 NDK build tools make standalone toolchain sh 脚本创建的独立 NDK 工具链构建 Android 协议缓冲区时遇到问题 我遇到的问题是这样的 libtool link g Wall Ww
  • 如何使用 ngFor ionic 隐藏未使用的项目?

    我试图从 ngFor 中隐藏未使用的项目 问题是 我确实成功隐藏了它 但它的位置仍然存在并且是空的 如下图所示 我的 ts 文件 coupon any couponz var data for let co of this shared c
  • 使用 lm() 和 Predict() 进行滚动回归和预测

    我需要申请lm 到我的数据框的扩大子集dat 同时对下一次观察进行预测 例如 我正在做 fit model predict dat 1 3 dat 4 dat 1 4 dat 5 dat 1 dat nrow dat 我知道我应该为特定子集
  • 我有一个 dd-mon-yyyy 格式的日期(字符串),我想将此日期与系统日期进行比较

    我在 字符串 中有一个 dd mon yyyy 格式的日期 我想将此日期与系统日期进行比较 例如 我的时间是 2010 年 10 月 12 日 我想将其与相同格式的系统日期进行比较 您可以使用SystemDateFormat例如 用于解析字
  • MySQL 显示状态 - 活动连接数还是总连接数?

    当我跑步时show status like Con 它显示了连接数 为 9972 并且还在不断增长 这是活跃连接数还是总连接数 根据the docs 表示历史上的总数 Connections 尝试连接 MySQL 服务器的次数 成功或失败
  • JavaScript:检测表单提交完成

    我在 iframe 中有一个表单并提交它 我如何知道提交何时完成 我正在使用 jQuery 提交表单 但不认为有回调 myForm submit 如何将事件附加到提交完成 提交表格会将您重定向到下一页 但你总是可以尝试ajax功能 http
  • ThreeJS - 如何将环境贴图应用到导入的 obj 模型?

    EDIT 我在这篇文章中找到了一个解决方案 如何将材质分配给 ColladaLoader 或 OBJLoader 我使用以下代码实现了允许我在导入的 obj 上使用 envMaterial 立方体贴图的效果 var loader new T
  • 如何使用selenium为firefox浏览器禁用通知

    我想在启动 Firefox 浏览器时完全禁用通知 对于不同的浏览器 驱动程序 需要设置不同的配置文件 选项 Firefox FirefoxProfile ffprofile new FirefoxProfile ffprofile setP
  • 与 NEON 内在函数的数据类型兼容性

    我正在使用来自 C 代码的 NEON 内在函数进行 ARM 优化 我理解并掌握了大部分打字问题 但我陷入了这一问题 指令vzip u8返回一个uint8x8x2 t值 实际上是两个数组uint8x8 t 我想将返回值分配给一个普通的uint
  • C# 泛型类中的协方差

    C 4 0 NET 4 5 Silverlight 5 看起来很奇怪 我找不到解决方案 所以需要一些帮助 我有基类 Base 和派生类 Child Base 我还有帮助程序类 它具有通用类型来执行特定工作 一个 EF 实体帮助程序 其中 T
  • 如何从文件路径中删除%20?

    file home ashu Music Collections randomPicks ipod 20on 20sep 2009 Coldplay Sparks mp3 如何转换像上面这样的字符串以获得可以传递到的正常文件路径open 功
  • 如何使用 mechanize 库执行 HEAD 请求?

    我知道如何使用 httplib 执行 HEAD 请求 但我必须对该站点使用 mechanize 本质上 我需要做的是从标头 文件名 中获取值 而不实际下载文件 有什么建议我可以如何实现这一点吗 Mechanize 本身仅发送 GET 和 P
  • 在 OfficeJS 中,您可以检索绑定对象的范围吗?

    针对 Word Online 但任何针对 Excel PPT 的指示也会有所帮助 本质上 是否可以将绑定对象内的文本视为范围 因此 能够选择全部并将插入符移动到开头 结尾 我设想代码具有以下效果 Office select myBindin
  • 如何从 python 中的另一个 .py 文件访问全局变量?

    我创建了两个文件 当我运行时a py 结果是 1 1 这是正确的 然而 运行b py 结果是没有 我如何获取请求的值b py a py requests def set value global requests requests 1 1
  • 创建一个大的虚拟文件

    我是这个社区的新手 也是 iOS 开发的新手 我希望有人能帮助我解决一些小问题 目前我正在为自己编写一个小应用程序 它应该创建一个非常大的虚拟文件 其中包含虚拟数据或单词或任何使它变大的东西 原因是 我想单击一个按钮 应用程序应该生成一个
  • 使用另一个 data.table 中的值更新 data.table 中的值

    我有一个包含大约 2500 万行的数据集 我正在获取这些行的子集并执行一个运行良好的函数 但是 我接下来需要做的是用新值更新原始数据集中的值 同时保留其余值 我确信这很简单 但我就是无法理解它 这是我正在处理的事情的简化版本 require
  • 无需 AJAX 将 JSON 文件从 jQuery 发送到 PHP

    所以 我是 javascript jquery 的新手 但我已经使用 PHP 足够长的时间了 我知道如何使用 PHP 从输入中获取数据 这非常简单 但是当尝试使用 jQuery 执行相同操作时 如何操作却超出了我的想象 现在我有这个脚本 还
  • JavaScript 中的 PMT

    我正在尝试编写与 EXCEL PMT 函数等效的代码 在 JavaScript 中 公式如下所示 function PMT ir np pv fv ir interest rate per month np number of period
  • nextTriggerDate() 不返回“预期”值,是否有其他方法来获取重复本地通知的下一个触发日期?

    在我的应用程序中 我允许用户安排重复的本地通知 我遇到的问题 基于环顾四周的任何其他问题 是 nextTriggerDate 始终将其返回值基于当前时间而不是安排通知的时间 我看到了在通知的 userInfo 中存储 日期 值的建议 但从通