2016-06-21 3 views
0

Я прошел сегодняшнюю дату и время до текущего времени. Тем не менее, он запускается мгновенно по мере выполнения кода.UILocalNotification стрельба мгновенно

Он дает правильный результат в журналах.

localNotification <UIConcreteLocalNotification: 0x7a8cc990>{ 
fire date = Tuesday, 21 June 2016 at 12:30:00 PM GMT, time zone = GMT (GMT) offset 0, repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Tuesday, 21 June 2016 at 12:30:00 PM Eastern Daylight Time, user info = { 
    "FIRE_TIME_KEY" = "2016-06-21 12:30:00 +0000"; 
    NotifySound = Default; 
    "Program_Id" = 1114; 
    "Program_Name" = "Nutrition For Ch1"; 
    notification = Start; 
}} 

Вот мой код:

NSDate *date = [NSDate date]; 
NSDateFormatter *format = [[NSDateFormatter alloc]init]; 
[format setDateFormat:@"yyyy-MM-dd"]; 
NSString *strDt = [format stringFromDate:date]; 

NSString *strDate = [NSString stringWithFormat:@"%@ %@",strDt,strStartSelectedDateTime]; 
date = [formater dateFromString:strDate]; 
NSDictionary *dataDict = [NSDictionary dictionaryWithObjectsAndKeys:date,@"FIRE_TIME_KEY", 
              [[remainingScheArr valueForKey:kUser_Program_Mst_Program_Id] objectAtIndex:h],kUser_Program_Mst_Program_Id, 
              [NSString stringWithFormat:@"%@ For %@",[[remainingScheArr valueForKey:kProgram_Mst_Program_Name] objectAtIndex:h], 
              [[NSUserDefaults standardUserDefaults]valueForKey:kSelected_Student]],kProgram_Mst_Program_Name, 
              @"Start",@"notification", 
              strNotifySoundPath,@"NotifySound", 
              nil]; 
[self performSelector:@selector(scheduleNotificationWithItem:andRepeatInterval:) withObject:dataDict withObject:nil]; 


- (void)scheduleNotificationWithItem:(NSDictionary*)item andRepeatInterval:(NSCalendarUnit)CalUnit 
{ 
    UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 

    localNotification.fireDate = [item valueForKey:@"FIRE_TIME_KEY"]; 

    localNotification.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 

    localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 


    localNotification.alertBody = [NSString stringWithFormat:@"Remember: %@ starts at %@.",value,value]; 

    localNotification.alertAction = NSLocalizedString(@"View Details", nil); 

    localNotification.userInfo = item; 

    localNotification.repeatInterval = CalUnit; 

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

    NSLog(@"localNotification %@",localNotification); 
} 

Это не дает каких-либо ошибок. Он успешно стреляет, но не в запланированное время, только при выполнении кода, который он стреляет.

+0

'YYYY', а не' yyyy'? Я ожидаю, что преобразование строки в дату будет нарушено или что-то в этом роде. Примечания: 1) Вы не проверяете и не сообщаете об ошибках. 2) Ваш код слишком сложный. Например, вы создаете объект 'date', который является субоптимальным. – Droppy

+0

http://stackoverflow.com/questions/25948037/ios-8-uiapplication-sharedapplication-scheduledlocalnotifications-empty Я думаю, что это та же проблема, что и ваша? – Joshua

+0

Проверьте свой пожар, это кажется неправильным, запишите его и проверьте. – iphonic

ответ

0

Вы пытаетесь запланировать локальное уведомление.

NSDate *date = [NSDate date]; // Will give you current date time and Notification will fire immediately. 

Необходимо добавить промежуток времени в дату.

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:60]; //Will fire after 60 seconds. 

Надеюсь, что это поможет.

Rgds,

Amit