zoukankan      html  css  js  c++  java
  • 分析下 提醒的那个 蛋疼的数字,

    那个神奇的数字 = shouldNumber - trueNumber;《梦里踏雪几回,叶下藏花一度,此中有深意,欲辩已忘言》

    1,shouldNumber,应该 被点击进入的 提醒个数,现在的逻辑是:只要 放在 application里面的通知,只要是 时间小于当前时刻的,那么都认为 是应该被点击进入的通知,通知个数都是 加 1的。

    for (int i=0; i<[totalNotificationArraycount]; i++) {

            NotificationItem *item=[totalNotificationArrayobjectAtIndex:i];

            int period = [self changeToMinisecond:item.time];

            if (period < 0) {//小于现在的这个时刻

                shouldNumber ++;

            }

        }

    2,trueNumber,这个数字是 根据  回调 一次 这个方法 didReceiveLocalNotification,认为是 用户点击进入一次的,trueNumber也顺应的 加 1,

    -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

    {

        trueNumber ++;

     }

    3,进入提醒页面时调用

    -(void)cleanAndSaveNotificationNubmer:(id)sender

    {

        trueNumber = shouldNumber;

        [TTCacheUtilwriteObject:[NSStringstringWithFormat:@"%d",trueNumber] toFile:@"trueNumber.plist"];

    }

    4,home页面加载调用

    -(int)badgeNumberForLocalNotification

    {

        shouldNumber = 0;

        for (int i=0; i<[totalNotificationArray count]; i++) {

            NotificationItem *item=[totalNotificationArrayobjectAtIndex:i];

            int period = [self changeToMinisecond:item.time];

            if (period < 0) {//小于现在的这个时刻

                shouldNumber ++;

            }

        }

        TTLog(@"应被点入的通知个数 %d",shouldNumber);

        if ([selfnextDayIsComing]) {

            shouldNumber = trueNumber = 0;

            [TTCacheUtilwriteObject:[NSStringstringWithFormat:@"%d",trueNumber] toFile:@"trueNumber.plist"];

        }

     

        trueNumber = [[TTCacheUtilobjectFromFile:@"trueNumber.plist"]intValue];//tureNumber 需要再次读取的,因为他的直可能变化了(从今日提醒页面过来),

     

        return shouldNumber - trueNumber;

    }

    疑问:可能 这时候 tureNumber的直 的确 等于了 shouldNumber,可是 是shouldNumber的过去时了,shouldNuber会清0重新 安装 刚刚设置的 计算的,这个时候 要是设置少了,那就 有可能是负的了,也就是 说是 两个 shouldNumber相加减的,之前小于当前时间的 有三个,现在的有两个,那么 就是 -1个了,这种情况 只支持 不重新设置的情况

    5,在启动时候 会读取缓存中的 trueNumber

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

        trueNumber = [[TTCacheUtil objectFromFile:@"trueNumber.plist"]intValue];

    }

    6,关于 shouldNubmer的修改,只要 会调用 initLocalNotification这个方法, totalNotificationArray就会修改(如果通知有变化的话),然后 这个数组里面的 shouldnumber就会修改,然后 显示的数字就会被改动。

    7,两个方向:

    从 提醒(今日提醒,提醒设置)页面 ----》home页面

    从启动-----》home页面,需要 重新读下 shouldNumber的,

    担忧:trueNumber是写入到缓存当中的,会不会 一直老大的数字,不过 只有在 调用 didreceiveLocalnotification的时候才会  tureNumber++,否则的话,最多是跟 shouldNumber一般般大而已。

    设置好的情况下,shoudNumber的直 会变化,即小于当前时间 的个数,时间越向后面它的个数会增加,同时如果 进入今日提醒页面的话,那么就会把它 设置跟 shouldNumber此刻一样大的数,(突然有个疑问,最终都是要进入 今日提醒页面的,也就是 不管 trueNumber ++ 还是 不 ++ ,它最终都是 会跟 shouldNumber一样大的,fuck ). 那么在显示的时候,要么 显示没有 提醒的 数,要么 不显示,不存在 trueNumber 一点一点 加 的情况,只要进入今日提醒页面,就把 trueNumber拔高到跟 shouldNumber一般高的情况。。。。。。可是又有问题了,显示的 是 过去当中的,没有看过的通知个数啊,如果看过了,尼玛还给别人提示,多蛋疼啊。。。。。。草,这个数字死活不显示了是什么问题,是不是 trueNumber太 大了。。。。。。也有可能不是这种情况,而是 刚好 都不大,只是 shouldNumber 刚好等于 trueNumber呢。。。。。。这样的话只能看过了这个时间点,等 shouldNubmer增大了,nnd。。。。。。

    1,设置一次,很老实不再重新设置了,shouldNumber相对稳定,而tureNumber也相对稳定;

    2,没事点着 设置,shouldNumber总是在变,点击进入的 次数 以及 进入提醒,总是 会 让trueNumber变来变去;如果trueNuber被设置到一个高位,而shouldNuber被搞到一个 低位怎么办 ?是不是要重置他们的状态呢?是不是可以 判断,如果 trueNumber大于 shouldNumber,那么就 把 trueNumber  = shouldNumber呢。。。。。。

    设置之后,马上有提醒数字,总感觉不合适啊。。。。。。并且现在 用户点击进入的 次数没有纪录啊,纪录了啊,只是后来都被 设置 成 跟shouldNumber一样的数了。。。。。。

    假如:7,9,11,4点四个通知,用户看了7,9 这两个通知,然后 11点忘记看了,下午三点看的时候,按道理 应该有一个通知数字在提醒呢, 按照现在的情况,9点看的时候,shouldNuber = 2,而tureNumber = 2,到 三点看的时候,shouldNumber = 3,而trueNubmber = 2,因此刚好是 显示 1.

    可是如果设置了呢,比如 用户11点设置了下,这个时候 shouldNumber = 2,trueNumber = 2,设置后 shouldNuber = 1了,而tureNuber = 2,等4点打开的时候,shouldNumber = 2,而tureNumber = 2,本来应该显示一个的,可是显示的是 0,也就是没有显示,fuck。。。貌似主要就是这个问题了。。。。。。要做的就是 shouldNumber > = trueNumber;

    要是第一次设置的呢,那么 如果是 所有提醒都小于 现在设置的时刻,那么是不会 有数字的,如果 大于现在的时刻,设置后 马上就会 有数字的。。。。。。好像有数字是必须的。。。。。。

  • 相关阅读:
    贪婪匹配
    洛谷P1219 [USACO1.5]八皇后 Checker Challenge【搜索回溯】
    【数据结构笔记】栈
    数据结构课堂笔记
    DAY1
    小记2020.1.10
    c++复习
    c++用流控制成员函数输出数据
    c++用控制符控制输出格式
    "中国东信杯"广西大学第二届程序设计竞赛E Antinomy与红玉海(二分)
  • 原文地址:https://www.cnblogs.com/guligei/p/3200382.html
Copyright © 2011-2022 走看看