接着理 本地通知,uilocalnotification,
initLocalNotification的功能
1,取消 application里面的所有通知
2,从alarmArray = [TTCacheUtil objectFromFile:@"alarm.plist"];这里面 去出需要的通知内容 进行 注册schedule,(alarm.plist变化, 变化性的情况)
3,是否有声音的判断(变化性的情况)
4,跟现在的时间 比较,如果小,那么加上 一天或者 一周或者一个月,(有效性的情况)
因此:通知内容变化必须调用
有效性在必要的时候检查
疑问:被调用这么多次,可不可能 重复呢?
小于0的时候,那么如果不是一天呢,是多天呢,比如两天呢,加上一天还是 小于一天啊,乖乖?这个不会出现,因为这个 就是今天的时刻来判断的,纵然是负值 其绝对值 也不会 小于24小时的,
修改的地方:几乎是每一个关隘啊,
开始 didfinishlanch: [self initLocalNotification];有效性检查
//中间 钝化,resignActive: [self initLocalNotification];有效性检查,这个会很频繁的,
//退出:willTerminal: [self initLocalNotification];有效性检查
接收到时候:didReceiveLocalNotification:[self initLocalNotification];变化性检查
声音状态变化的时候: [SharedAppDelegate initLocalNotification];变化性检查
提醒开关关闭的时候: [SharedAppDelegate initLocalNotification];变化性检查
//从home页面过去的时候,从提醒设置页面过去的时候(只要不是从appdelegate 的 didreceiveLocalNotification方法过去,这个里面包含了提醒开关关闭的 情况),就调用:[self initLocalNotification];有效性检查+变化性检查,这个会更频繁
假设:如果不做有效性的检查呢?一天 只做一次够么?隔几天 做一次够么?仅仅 打开应用 的时候 做 第一次 够么?只要调用 initLocalNotification这个方法,就会给 application里面放入四个(现在用户全部开的话)有效的 通知。
如果不管它,就让它调用,随笔调用,有什么坏处么,有什么影响么?
如果不检查呢,application里面 会变的没有 一个通知,对的,就是这样,调用一次,会删除一次,会被删除完的,如果不删除呢,那么里面会一直放着通知,
因此结论:在通知变化的时候,修改也好,被删除也罢,只要变化了,就做一次调用就好了,
情景:用户安装了应用,然后会 调用一次 didfinish,缓存是空的,载入 0个通知,然后 到 了今日提醒页面,这个时候,还没有进行设置,因此不会执行载入 通知的方法,如果 用户返回,这个时候 application里面 是没有通知的。 (alarmArray是在 今日提醒中生成的)下面一段代码搞定 忧虑
if (![TTCacheUtilobjectFromFile:@"alarm.plist"]) {
[TTCacheUtilwriteObject:alarmArraytoFile:@"alarm.plist"];//从这里开始写入缓存
[SharedAppDelegateinitLocalNotification];
}
关于应用程序打开着 弹框,只有 钝化一次,才能弹框,因为在
- (void)applicationWillResignActive:(UIApplication *)application{
becomeActiveFirst = NO;
}
两个算法:
int period = [self changeToMinisecond:item.time];//这个 差直不会少的离谱,因为它就是一天的,纵然是 负的也不会超过一天的,
//period = [self changeToMinisecond:908];
if (period < 0) {
period = [self minusNowTimeWithInterval:(item.time + 24 * 60 * 60 * 7)];
//period = period + 24 * 60 * 60 * 7;
}
notification.fireDate = [now dateByAddingTimeInterval:period];//在现在的时刻基础上加一个时间间隔,
3 ,16, 24 ;16 + (3-16 + 24) = 16 + 11 = 27;27 - 24 = 3; 上午三点,看来之前的算法是对的,纯粹是瞎猫碰上死老鼠,
3 ,16,24 ;16 + 3+24 = 27 + 16 = 43;43 -24 = 19;19-12 = 7;下午7点