У меня есть одна идея, как это сделать, я реализовал это в моем проекте
Во-первых, создать локальное уведомление с указанием даты пожара (например, каждую минуту). Следующий шаг - заполнить данные пользователя с уникальным идентификатором для этого уведомления (если вы хотите, чтобы удалить его в будущем), и ваш период, как это:
-(void) createLocalRepeatedNotificationWithId: (NSString*) Id
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
NSTimeInterval your_custom_fire_interval = 60; // interval in seconds
NSDate *remindDate = [[NSDate date] dateByAddingTimeInterval:your_custom_fire_interval];
localNotification.fireDate = remindDate;
localNotification.userInfo = @{@"uid":Id, @"period": [NSNumber numberWithInteger:your_custom_fire_interval]};
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
После этого осуществить -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
в вашем AppDelegate:
- Извлеките свой пользовательский период из информации о пользователе.
- Изменить дату пожара на следующий период
Просто добавьте его снова в отобранные примечания!
NSInteger period = [[notification.userInfo objectForKey:@"period"] integerValue]; //1
NSTimeInterval t= 10 * period;
notification.fireDate =[[NSDate date] dateByAddingTimeInterval:t]; //2
[[UIApplication sharedApplication] scheduleLocalNotification:notification]; //3
, если вы хотите, чтобы удалить это уведомление, сделать
UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
NSDictionary *userInfoCurrent = oneEvent.userInfo;
NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"id"]];
if ([uid isEqualToString:notification_id_to_remove])
{
//Cancelling local notification
[app cancelLocalNotification:oneEvent];
break;
}
}
Очень важно!
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
не звоните, когда вы на фоне. Таким образом, вы должны настроить долговременную фоновое задание, в котором вы снова создадите уведомление.
Вы можете рассказать мне о (каждом) – 2012-09-12 10:15:22
Thanx сейчас работает – 2012-09-12 10:41:15
любым способом мы можем использовать repeatInterval для 3, 5, 7-дневного интервала? – 2015-12-14 21:32:10