локальное уведомление iPhone в определенное время - PullRequest
2 голосов
/ 03 января 2012

Я хочу отправлять уведомления в 22:00 (независимо от страны) каждую неделю. Нужно ли использовать timeZone. В настоящее время я использую приведенный ниже код для отправки уведомлений каждую неделю, но там, как запускать уведомления точно в 10 вечера.

NSDate *date = [NSDate date];
NSDate* myNewDate = [date dateByAddingTimeInterval:7*24*60*60];    
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = myNewDate;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatInterval = NSWeekCalendarUnit;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[localNotification release];

Ответы [ 2 ]

4 голосов
/ 03 января 2012

Я думаю, что установка fireDate на 22:00 в день, когда вы хотите получить уведомление (а не «через неделю»), будет делать то, что вы хотите.Возможно, вы захотите использовать NSCalendar для этого.

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
NSDate *currentDate = [NSDate date];
NSDate *fireDate = nil;

[dateComponents setDay:3];  // ...or whatever day.
[dateComponents setHour:22];
[dateComponents setMinute:0];

fireDate = [gregorian dateByAddingComponents:dateComponents
                                      toDate:currentDate 
                                     options:0];

[localNotification setFireDate:fireDate];
[dateComponents release];
0 голосов
/ 04 января 2012

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

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
NSDate *currentDate = [NSDate date];
NSDate *fireDate = nil;

//Getting current Hour
NSDateComponents *components = [[NSCalendar currentCalendar] components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:currentDate];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

[dateComponents setDay:7];//After 1 week
[dateComponents setHour:22-hour-1];  //Calculating Remaining time for 10PM && "-1" because i am adding 60 min
[dateComponents setMinute:60-minute];

//Adding remaining time to current Time
fireDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents
                                              toDate:currentDate 
                                             options:0];
[localNotification setFireDate:fireDate];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...