Как установить пользовательский интервал повторения для Nslocal Notification .....? - PullRequest
6 голосов
/ 09 августа 2011

Я новичок в разработке для iphone. Я пытаюсь использовать NslocalNotification в моем проекте. Мне нужно давать напоминание каждые 2 часа, каждые два дня или каждые два месяца и т. Д. В настоящее время я использую NslocalNotification. Повторите интервал. Но егоРабота только на каждую минуту за каждый час с использованием Nscalender ....

        NSString *InterVal=[freQuencyArr objectAtIndex:index-2];
        NSString *InterValType=[freQuencyArr objectAtIndex:index-1];
        if(![InterVal isEqualToString:@"Every"])
        {  
         result=[InterVal intValue];
        }else
          result=1;
        if([InterValType isEqualToString:@"Day"]){
             notification.repeatInterval= NSDayCalendarUnit;    
        }else if([InterValType isEqualToString:@"Week"]){
            notification.repeatInterval= NSWeekCalendarUnit;    
         }
        else if([InterValType isEqualToString:@"Month"]){
            notification.repeatInterval= NSMonthCalendarUnit;   
        }else if([InterValType isEqualToString:@"days"]){
             notification.repeatInterval=result*24*60*60;
        }

здесь Если результат равен 2, зависит от IntervalType Мне нужно уведомление, что он не работает со мной

         if([InterValType isEqualToString:@"days"]){
             notification.repeatInterval=result*24*60*60;
        }

Ответы [ 3 ]

7 голосов
/ 31 августа 2011

@ Шринивас:

Если вы посмотрите на ссылку, которую я разместил в этом ответе, вы узнаете, что я испробовал здесь все возможные решения, чтобы попытаться сделать то, что вы хотите в данный момент.

Я пытался все это реализовать в своем приложении, но это не работает.

Я боюсь сказать это, но это невозможно.Это только позволяет объектам unit NSCalendarUnit быть установленными в качестве интервала повторения.

Я потратил почти 2 месяца (я задал вопрос в декабре 2010 года и сам ответил на него в феврале 2011 года), чтобы попробоватьи внедряйте все возможные решения, доступные в Интернете, через разные статьи и разные форумы, но ни одна из них не помогла.

Проверьте мою ссылку и найдите все ответы, если что-то вам пригодится.

Как установить локальный интервал повторения уведомлений в пользовательский интервал времени?

Действительно надеюсь, что это поможет вам.

3 голосов
/ 31 августа 2011

Свойство repeatInterval UILocalNotification не может использоваться для повторения менее чем за каждую единицу календаря, то есть каждый день, каждую неделю, каждый месяц и т. Д.

Вместо этого вам придется планировать несколько уведомлений для достижения желаемого эффекта, соответственно установив свойство fireDate.

1 голос
/ 05 сентября 2011

Как говорит Лемнар, вы не можете использовать repeatInterval для повторения с частотой, отличной от календарных единиц, предоставленных Apple. Итак, код ниже:

     if([InterValType isEqualToString:@"days"]){
         notification.repeatInterval=result*24*60*60;
    }

не будет ничего делать. Я также использую повторные уведомления в приложении, которое я создал, и способ, которым я обошел это, заключается в создании нескольких уведомлений, каждое из которых повторяет, чтобы дать «желаемую» частоту повторения. Например, если я хочу повторить «каждые 2 дня», я не могу сделать это с помощью repeatInterval. Однако в моем приложении есть «функция планирования», которая создает несколько отдельных уведомлений для достижения этой цели. Я делаю это в течение произвольного промежутка времени (в моем случае, одна неделя). Таким образом, в приведенном выше примере, когда пользователь указывает, что ему / ей нужно уведомление каждые два дня с сегодняшнего дня, я создаю 3 уведомления (по одному на каждый день 3, 5 и 7).

Для повторения с частотой меньше, чем единица календаря, все немного проще. Скажем, мне нужно повторять каждые 12 часов (в 6 утра и 6 вечера). Затем я бы создал 2 уведомления (одно на 6 утра и другое на 6 вечера). Затем я бы установил repeatInterval для каждого из этих уведомлений в NSDayCalendarUnit. Таким образом, я создал набор уведомлений, которые повторяются каждые 12 часов.

Когда мое приложение загружается, я выхожу еще на 7 дней и заново создаю уведомления по мере необходимости. Не самое элегантное решение, но это был лучший способ обойти ограничение repeatInterval.

...