为什么苹果不做节假日闹钟等简单功能?
我是工作日闹钟【循环闹钟】的作者,我从开发者的角度来讲讲我觉得为什么苹果不想做这件事情
不想承担维护成本
包括代码的维护成本以及节假日信息的维护成本
苹果自带的日历已经有了节假日信息了,显然如果苹果想在闹钟力增加一个跳过节假日的开关设置,从技术层面是不难的。
要了解这个,就要知道现在的闹钟的运行逻辑
苹果自带闹钟的现有运行逻辑
用户使用闹钟app设置闹钟 -> 闹钟app提交闹钟设置到AlarmManager -> 苹果系统调度AlarmManager实现响铃。
从这个流程你可以看到,闹钟什么时候响铃,甚至10年后什么时候,在你完成闹钟app的时刻就决定了,但10年后的节假日安排肯定还没出吧?现在按照目前的框架肯定实现不了,下面是截取苹果Alarm Api重复设置的代码,可以看到目前只能按照周几重复。

那么你肯定有一个问题:为什么苹果为什么不能在api重复设置的参数里面增加一个叫做 是否需要跳过节假日的参数来达到这个功能?
我试着看下可能的方案,苹果要实现跳过节假日的功能,只有两个方案:
- 在系统级api里面加载各种节假日数据,然后在api里增加一个是否跳过节假日的参数,给苹果的自带闹钟调用。
- 在苹果的自带闹钟里加载各种节假日数据,然后在节假日的时候取消当前闹钟的调度,等过了节假日再重新调度闹钟。
对于方案1,苹果肯定不乐意,让一个系统级的调度器去依赖第三方节假日数据,苹果可能还要去调用第三方http接口来获取节假日,意味着不稳定,未来在系统级的调度器维护这种复杂的节假日逻辑肯定会是大麻烦。
对于方案2,让app层面来处理这个事情看着靠谱一点,但苹果也不乐意在app层面来做这个事情,因为闹钟最重要的稳定,少响铃一次,用户可能都会失去对苹果稳定,靠谱的印象。这和自带日历app显示节假日数据是不同的,因为重要性没有那么高。
以上纯个人猜测~
随着用户抱怨越来越多,苹果重要在25年的IOS26系统里,向开发者开放了alarmkit api,显然把这个事情甩锅给开发者是最好的选择,哈哈~
欢迎使用我开发的工作日闹钟 -> 【循环闹钟】,除了工作日闹钟,还有大小周闹钟,轮班闹钟,月度闹钟等各种类型
懒人闹钟-循环闹钟 App - App Store
想要了解苹果给我们开发者埋的这个坑,可以看我这篇文章: