2013-09-05 45 views
1

本地通知我有一个问题,AppDelegate.m文件中ViewController.miOS的 - 在后台

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]; 

建立通知在后,我想运行一个方法,当用户打开通知,应用程序在后台。

- (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

我会检查你的fireDate..Looks很时髦 –

回答

2

您使用了错误的键“UIApplicationLaunchOptionsRemoteNotificationKey”。此密钥用于推送通知。为本地通知使用以下密钥。

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];