1、最近想做一个日历事件提醒的东西。就是用户可以使用app定义一个事件,到某个时间点提醒用户改做什么事情。
对开发者来说,当用户使用产品时,我们并不知道用户什么会新建一个事件,会新建多少事件。
一开始的思路就是后台起个线程或者说时间超久的timer不断检测事件。考虑到性能,可以直接接入系统的主线程的runloop。但是这么做有个弊端,就是当用户退出程序后,就无法监控事件。
偶尔看到系统提供的这个东西:
UILocalNotification (iOS 8.0之前)
下面是官方文档摘录:
UILocalNotification
Important: UILocalNotification is deprecated in iOS 10. Use UNNotificationRequest instead. A UILocalNotification object specifies a notification that an app can schedule for presentation at a specific date and time.
iOS 10之后,用UNNotificationRequest。
我最看重它有一个特点:
app关闭的时候也能接收和显示通知。
但是,其也有限制:
对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略。
为什么会有这个限制,我觉得这是把自己的服务注册到了系统的服务队列中去了啊,用户的手机上有那么多的app,系统不可能让你无限制的注册事件的,不然整个系统都会被非系统app的请求给拖垮的。
大家看一下,iPhone自己提供的【提醒】app,即使你从后台退出了这个app,对你自定义的“提醒事件”,不管是“时间到了”的提醒,还是“地理位置”的提醒,系统都会给出及时的响应,甚至是你重启手机都没关系的。从这个可以看出,这个事件是被加入到了iPhone手机的系统服务队列中的啊!
网友评论