2013-09-20 5 views
0

Я хочу, чтобы местное уведомление два раза в день, как и для бывших: - утром 7 утра и вечером 6 вечера каждый день, чтобы кто-нибудь мог помочь мне, как я могу это сделать?UILocalNotification Дважды каждый день

удалось установить пользовательское время, чтобы огонь местного уведомления смотрели, где каждый, но ничего не полезно для огня местного уведомления дважды в день, если любая помощь будет признателен graetly

Заранее спасибо :)

это мир кода я использую местное уведомление, но не стрелять вообще :(

- (void)scheduleNotification 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications];  
    Class cls = NSClassFromString(@"UILocalNotification"); 
    if (cls != nil) {  
     NSString *end = @"2013-09-20 11:24:00 +0000"; 
     NSDate *endDate = [self convertStringToDate:end]; 
     NSLog(@"end date :%@", endDate); 

     UILocalNotification *notif = [[cls alloc] init]; 
    notif.fireDate = endDate; 
    notif.timeZone = [NSTimeZone defaultTimeZone]; 

    notif.alertBody = @"Did you forget something?"; 
    notif.alertAction = @"Show me"; 
    notif.soundName = UILocalNotificationDefaultSoundName; 
    notif.applicationIconBadgeNumber = 1; 

    notif.repeatInterval = NSDayCalendarUnit; 

    [[UIApplication sharedApplication] scheduleLocalNotification:notif]; 
    [notif release]; 
    } 
} 

ответ

1

Наконец Есть решение, как установить UILocalNotification для 7 утра и 6 вечера и повторять его ежедневно надеюсь это поможет, кто ищет передние же решения по уведомлению

-(void)scheduleNotification 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

    Class cls = NSClassFromString(@"UILocalNotification"); 
    if (cls != nil) {  
     NSDate *now = [NSDate date]; 
     NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
     NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now]; 
     [components setHour:7]; 
     [components setMinute:0]; 
     NSDate *today7am = [calendar dateFromComponents:components]; 

     UILocalNotification *notif = [[cls alloc] init]; 
     notif.fireDate = today7am; 
     notif.timeZone = [NSTimeZone defaultTimeZone]; 
     notif.repeatCalendar = [NSCalendar currentCalendar]; 
     notif.alertBody = @"Did you forget something?"; 
     notif.alertAction = @"Show me"; 
     notif.soundName = UILocalNotificationDefaultSoundName; 
     notif.applicationIconBadgeNumber = 1;  
     notif.repeatInterval = NSDayCalendarUnit; 

     [[UIApplication sharedApplication] scheduleLocalNotification:notif]; 
     [notif release]; 


     NSCalendar *calendar2 = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
     NSDateComponents *components2 = [calendar2 components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now]; 
     [components2 setHour:18]; 
     [components2 setMinute:0]; 
     NSDate *today6pm = [calendar2 dateFromComponents:components2]; 

     UILocalNotification *notif2 = [[cls alloc] init]; 
     notif2.fireDate = today6pm; 
     notif2.timeZone = [NSTimeZone defaultTimeZone]; 
     notif2.repeatCalendar = [NSCalendar currentCalendar]; 
     notif2.alertBody = @"Did you forget something2?"; 
     notif2.alertAction = @"Show me2"; 
     notif2.soundName = UILocalNotificationDefaultSoundName; 
     notif2.applicationIconBadgeNumber = 1; 
     notif2.repeatInterval = NSDayCalendarUnit; 

     [[UIApplication sharedApplication] scheduleLocalNotification:notif2]; 
     [notif2 release]; 
    } 
} 
1

Вам необходимо установить два уведомление, один на утро, один для вечера, как бы иметь repeatInteval свойства установлено в NSDayCalendarUnit.

+0

я согласен, но почему этот код не работает? и если у вас есть какой-либо мир кода, который может вызвать уведомление в определенное время, то это будет очень полезной помощью. –

2

Проблема с пути вы создаете дату:

NSString *end = @"2013-09-20 11:24:00 +0000"; 
NSDate *endDate = [self convertStringToDate:end]; 
NSLog(@"end date :%@", endDate); 

Здесь вы создаете дату в 11:24 UTC/GMT, но вы скажите UILocalNotification использовать часовой пояс системы. Zo дата смещается к системному часовому поясу.

Просто установите timeZone из UILocalNotification в GMT:

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

Тогда UILocalNotification будет установлен правильный часовой пояс системы и не будет использовать смещение.

Другой вариант - не включать часовой пояс в строку даты и установить NSDateFormatter для включения системного часового пояса. Но с приведенным выше кодом он должен срабатывать, даже если изменяется часовой пояс.

Установите repeatInterval из UILocalNotification на номер NSDayCalendarUnit, чтобы повторить его каждый день.

notif.repeatInterval = NSDayCalendarUnit; 
+0

Я нахожусь в GMT 5:30, поэтому использовал 11:24 для уведомления об увольнении в 05:54:00 –

+0

Но держите в виду, что люди во всем мире могут использовать ваше приложение, и там смещение отличается от вашего. Поэтому постарайтесь сделать работу с кодом в любом часовом поясе. – rckoenes

+0

ОК, я согласен, но как я могу установить какое-либо время для исправления уведомления? если какой-либо рабочий код, то это будет большой помощью, но с фиксированным временем, так как я хочу установить уведомление для времени исправления каждый день. Повторите –

Смежные вопросы