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

Я новичок в разработке 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;
        }

person Srinivas    schedule 09.08.2011    source источник
comment
Был ли мой ответ полезен для вас?   -  person Parth Bhatt    schedule 31.08.2011


Ответы (3)


@Шринивас:

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

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

Боюсь сказать это, но это невозможно. Он позволяет только объектам unit NSCalendarUnit задавать интервал повторения.

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

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

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

Очень надеюсь, что это поможет вам.

person Parth Bhatt    schedule 31.08.2011
comment
Ха.. Теперь я решил, что мы не можем изменить пользовательский интервал повторения. - person Srinivas; 31.08.2011
comment
это любое возможное решение Повторить уведомление без использования повторного интервала? - person Srinivas; 01.09.2011
comment
@Srinivas: Серьезно говоря, я не думаю, что мы можем сделать это каким-либо образом, поскольку notification.repeatInterval имеет тип получателя как NSCalendarUnit, я не думаю, что его можно каким-то образом настроить, чтобы заставить работать настраиваемые интервалы - person Parth Bhatt; 01.09.2011
comment
я думаю. Это мое требование в проекте повторить уведомление. Возможно ли сохранить объект nlocalNotification в БД? - person Srinivas; 01.09.2011
comment
@Srinivas: я не об этом, но, может быть, вы можете попробовать с типом данных blob. Но, честно говоря, я никогда не пробовал это, и я не знаю много об этом. Надеюсь это поможет. - person Parth Bhatt; 01.09.2011
comment
Ха, ваше абсолютное право, но есть ли способ повторить интервал. С сохранением объекта уведомления в базе данных. Пожалуйста, помогите мне. Если возможно, дайте какой-нибудь пример кода - person Srinivas; 03.09.2011
comment
как повторять уведомление до тех пор, пока пользователь не остановит уведомление без того, чтобы Гена оценил новое уведомление. - person Srinivas; 05.09.2011
comment
@Srinivas: Вы можете повторять уведомления только в течение одного дня, одной недели, одного месяца и т. д. Короче говоря, мы можем повторить это только для одного NSCalendarUnit. - person Parth Bhatt; 05.09.2011
comment
ха ... это возможно, но в этом проекте они хотят уведомления каждые 25 минут. Я пытаюсь с одним случаем, когда когда-либо мы получали уведомление в делегате приложения. Получали метод уведомления, установленный на NextFireDate, но не работает отлично. - person Srinivas; 05.09.2011
comment
@Srinivas: Да, я знал, что fireDate не будет слишком эффективным, и поэтому я не предлагал вам этого. - person Parth Bhatt; 05.09.2011
comment
да, у меня есть несколько проблем с этим... Если вы найдете какой-либо код, связанный с нашим сценарием, пожалуйста, помогите мне. - person Srinivas; 05.09.2011
comment
Конечно, я не буду публиковать. Пожалуйста, предоставьте исходный код как можно скорее. - person Srinivas; 07.09.2011

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

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

person lemnar    schedule 31.08.2011
comment
это приложение для медицины. У нас есть несколько расписаний для одного и того же названия лекарства. Итак, как я могу установить каждый раз дату пожара. Его работа идеально подходит для каждого дня, месяца, минуты, часа. - person Srinivas; 31.08.2011
comment
возможно ли использовать объект NslocalNotification в базе данных. Если возможно, пожалуйста, некоторое руководство - person Srinivas; 01.09.2011
comment
Ха, ваше абсолютное право, но есть ли способ повторить интервал. С сохранением объекта уведомления в базе данных. Пожалуйста, помогите мне. Если возможно, дайте какой-нибудь пример кода - person Srinivas; 03.09.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.

person armohan    schedule 05.09.2011
comment
спасибо за отличный ответ..... как вы сказали, когда мое приложение загружается, я выхожу еще на 7 дней и воссоздаю уведомления по мере необходимости. когда получаю уведомление или когда приложение становится активным... - person Srinivas; 06.09.2011