博主在用swift做一个备忘录APP的过程中遇到一个问题,我为需要提醒的事项设置了localNotification,可以正常实现系统提醒功能,但是如果不点击提醒,而是直接进入程序,那么这个提醒条目将始终存在于系统的通知栏里面,除非用户手动去清除这个提醒通知。(在陌陌APP的回复提醒功能中存在这个问题,相信有些朋友会有体会)
在网上查到的基本都是Objective-C的代码,在Obj-c中可以使用release功能手动消除对应的notification,代码如下:
//localNotification为自定义好的一个提醒实例,将其加入到scheduleLocalNotification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
//释放
[localNotification release];
但是在swift中是没有release方法的,而通过打印scheduleLocalNotification.count,大家可以发现已经显示的提醒条目会被移除出scheduleLocalNotification,那么如何删除掉已经存在于系统通知栏里面的提醒呢?博主最终采用的方法比较便于理解:每次启动程序或者进入前台后,首先cancel掉全部LocalNotification,然后调用一个方法重新加载,因为作为备忘录类型的软件,如果设置的提醒日期已经过了,那么这个提醒就毫无意义,不可能会出现在通知栏了,所以可以通过与当前时间作比较,来重新设置需要提醒的条目,代码如下:

在Swift开发中,博主遇到了一个问题:当应用未被点击通知直接启动时,通知栏中的LocalNotification不会自动消失。解决方法是在应用启动或进入前台时取消所有LocalNotification,并通过比较当前时间重新设置有效提醒。
最低0.47元/天 解锁文章
305

被折叠的 条评论
为什么被折叠?



