• 接着理 本地通知,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点

  • 相关阅读:
    为什么使用Redis
    [Apache Pulsar] 企业级分布式消息系统-Pulsar快速上手
    [Apache Pulsar] 企业级分布式消息系统-Pulsar入门基础
    JDK源码分析系列---ArrayList和LinkList
    JDK源码分析系列---String,StringBuilder,StringBuffer
    单点登录
    单例模式的几种实现方式
    Bloom’S Taxonomy
    Python 字符串多替换时性能基准测试
    软件开发的生产力vs质量
  • 原文地址:https://www.cnblogs.com/guligei/p/3199914.html
Copyright © 2020-2023  润新知