我在文件 ViewController.m
中设置通知后出现问题 NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDateComponents *componentsForReferenceDate = [calendar components:(NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit ) fromDate:[NSDate date]];
[componentsForReferenceDate setDay: 9];
[componentsForReferenceDate setMonth: 11];
[componentsForReferenceDate setYear: 2012];
NSDate *referenceDate = [calendar dateFromComponents:componentsForReferenceDate];
// IMPOSTO ORA NOTIFICA
NSDateComponents *componentsForFireDate = [calendar components:(NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit ) fromDate: referenceDate];
[componentsForFireDate setHour: 19];
[componentsForFireDate setMinute: 13];
[componentsForFireDate setSecond: 00];
NSDate *fireDateOfNotification = [calendar dateFromComponents: componentsForFireDate];
// CREO LA NOTIFICA
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = fireDateOfNotification;
notification.timeZone = [NSTimeZone localTimeZone];
notification.alertBody = [NSString stringWithFormat: @"Get inspired. A new quote is available."];
notification.userInfo= [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Some Information"] forKey:@"Quotes"];
notification.repeatInterval= NSDayCalendarUnit;
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
在 AppDelegate.m 中,我想在用户打开通知并且应用在后台时运行方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
//SE L'APP VIENE LANCIATA TRAMITE LA NOTIFICA
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
{
[self.viewController generaCitazione];
}
return YES;
}
我哪里错了?
答案 0 :(得分:2)
您使用了错误的密钥" UIApplicationLaunchOptionsRemoteNotificationKey"。此密钥用于推送通知。使用以下键进行本地通知。
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];