我正在努力将本地通知添加到我正在开发的应用中。我在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];
}
}
}
答案 0 :(得分: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 :(得分: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.
当我更改此代码时,您的代码为我工作并发布了通知。