2013-04-23 47 views
0

我正在将本地通知添加到正在开发的应用中。我在纽约/东部时间2013年4月30日晚上11点设置一个通知。我将如何做到这一点?我试过多种方法,但没有一个能够正常工作。这是我使用的是什么的时刻(它不工作):为东部时区的未来日期设置本地通知

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] 
          objectForKey:@"setNotify"]]) { 
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"setNotify"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    NSString *str = [NSString stringWithFormat:@"2013-04-23T18:22:00"]; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'"]; 
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"US/Eastern"]]; 
    NSDate *dte = [dateFormat dateFromString:str]; 
    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    [cal setTimeZone:[NSTimeZone timeZoneWithName:@"US/Eastern"]]; 
    UIApplication* app = [UIApplication sharedApplication]; 
    UILocalNotification* notifyAlarm = [[UILocalNotification alloc] 
             init]; 
    if (notifyAlarm) 
    { 
     notifyAlarm.fireDate = dte; 
     notifyAlarm.timeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"]; 
     notifyAlarm.repeatInterval = 0; 
     notifyAlarm.soundName = @"trumpet.m4a"; 
     notifyAlarm.alertBody = @"Message"; 
     [app scheduleLocalNotification:notifyAlarm]; 
    } 
} 
} 

回答

1

试试下面的代码:

NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
[dateComps setDay:30]; 
[dateComps setMonth:4]; 
[dateComps setYear:2013]; 
[dateComps setHour:23]; 
[dateComps setMinute:0]; 
[dateComps setSecond:0]; 

NSDate *itemDate = [calendar dateFromComponents:dateComps]; 

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
if (localNotif == nil) 
    return; 
localNotif.fireDate = itemDate; 
localNotif.timeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"]; 

localNotif.alertBody = @"Message"; 
localNotif.repeatInterval = 0; 
localNotif.soundName = @"trumpet.m4a"; 
localNotif.applicationIconBadgeNumber = 1; 

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
1

有一两件事我注意到的是,我怀疑你的意思是使用YYYY在你的日期格式化程序中。来自Apple Docs

A common mistake is to use YYYY. yyyy specifies the calendar year whereas 
YYYY specifies the year (of “Week of Year”), used in the ISO year-week calendar. 
In most cases, yyyy and YYYY yield the same number, however they may 
be different. Typically you should use the calendar year. 

当我更改此代码时,我的工作为我并发布了通知。

相关问题