微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每月在特定日期重复通知

如何解决每月在特定日期重复通知

我想每月在特定日期重复发送一次通知,但是我担心的是,如果用户选择31,该怎么办?那么,通知只会每2个月触发一次,而不会在2月触发? 因为日期部分不匹配。

是否可以将日期设置为该月的最后一天,例如当下个月是2月,而用户选择了31。那么它将在2月的最后一天触发?

我可以采用非重复方式,并手动添加通知,但随后我将不得不面对64个计划的通知限制。

谢谢您的帮助。

解决方法

一种选择是使用远程通知并在服务器上处理它们。这将涉及更多的工作和一台服务器,但是它更加灵活,可以让您无需用户更新应用程序即可更改通知。链接到Remote Notifications的Apple文档。

另一个选择是使用Calendar

在执行发送通知的逻辑时,可以测试今天是否是该月的最后一天。如果用户选择在31日获得通知,并说今天是该月的最后一天,又是30日,则您仍可以发送通知,因为您知道该特定月份没有31日。

,

要使用Calendar模块。手动处理日期可能会非常棘手。

import Calendar

let selectedDate = "31/01/2020"

// Convert string to Date
let dateF = DateFormatter()
dateF.dateFormat = "dd/MM/yyyy"
let myDate = dateF.date(from: selectedDate)!

// Advancing date by a month,to get end of next month.
Calendar.current.date(byAdding: .month,value: 1,to: myDate)  // "Feb 29,2020 at 12:00 AM"

在上面的示例中,您可以看到如何将日期提前一个月。

如果用户选择说一个月的31号,则日历会自动准确计算下个月的结束日期,即使只有28、29、30或31天也是如此。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。