Local Notification “Everyday at 7:00am” not notifying

前端 未结 4 490
暗喜
暗喜 2021-01-03 16:20

I want a notification to go off everyday at 7:00, but it will not go off. I also want it to show in lock screen. Here is all the code I have so far.

-(void)         


        
相关标签:
4条回答
  • 2021-01-03 16:55

    even though this is a very old question i just came here from google and yeah isn't it funny how everyone answers by just copying other peoples answer?

    So for all the people like me coming from google, have a laugh at the spelling mistake that mite cost you a minute or two of wondering why it doesn't work.

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    

    works, but

    [[UIApplication sharedApplication] scheduleLocalNotiication:localNotification];
    

    Notiication doesn't...

    0 讨论(0)
  • 2021-01-03 17:05

    Try to use this:

    - (void)applicationDidEnterBackground:(UIApplication *)application 
    {
    
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    
    NSDateComponents *componentsForReferenceDate = [calendar components:(NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth ) fromDate:[NSDate date]];
    
    [componentsForReferenceDate setDay:9];
    [componentsForReferenceDate setMonth:11];
    [componentsForReferenceDate setYear:2012];
    
    NSDate *referenceDate = [calendar dateFromComponents:componentsForReferenceDate];
    
    // set components for time 7:00 a.m.
    
    NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ) fromDate: referenceDate];
    
    [componentsForFireDate setHour:7];
    [componentsForFireDate setMinute:0];
    [componentsForFireDate setSecond:0];
    
    NSDate *fireDateOfNotification = [calendar dateFromComponents:componentsForFireDate];
    
    // Create the notification
    
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    
    notification.fireDate = fireDateOfNotification;
    notification.timeZone = [NSTimeZone localTimeZone];
    notification.alertBody = [NSString stringWithFormat: @"Good Morning! Have a great day!"];
    notification.alertAction = @"go back";
    notification.userInfo= @{@"information": [NSString stringWithFormat:@"Some information"]};
    notification.repeatInterval= NSCalendarUnitDay;
    notification.soundName = UILocalNotificationDefaultSoundName;
    notification.applicationIconBadgeNumber = 1;
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    
    }  
    

    Thumbs up if this helped! :D

    0 讨论(0)
  • 2021-01-03 17:06

    it's working

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
            // Override point for customization after application launch.
    
            NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    
            NSDateComponents *componentsForReferenceDate = [calendar components:(NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth ) fromDate:[NSDate date]];
    
            [[UIApplication sharedApplication] cancelAllLocalNotifications];
    
            [componentsForReferenceDate setDay:27];
            [componentsForReferenceDate setMonth:10];
            [componentsForReferenceDate setYear:2016];
    
            NSDate *referenceDate = [calendar dateFromComponents:componentsForReferenceDate];
    
            // set components for time 7:00 a.m.
    
            NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ) fromDate: referenceDate];
    
            [componentsForFireDate setHour:8];
            [componentsForFireDate setMinute:0];
            [componentsForFireDate setSecond:0];
    
    
            NSDate *fireDateOfNotification = [calendar dateFromComponents:componentsForFireDate];
    
            // Create the notification
    
            UILocalNotification *notification = [[UILocalNotification alloc] init];
    
            notification.fireDate = fireDateOfNotification;
            notification.timeZone = [NSTimeZone localTimeZone];
            notification.alertBody = [NSString stringWithFormat: @"БЛАГОСЛОВИТЕ ПРОРОКА (с.а.в)"];
            notification.repeatInterval= NSCalendarUnitDay;
            notification.soundName = UILocalNotificationDefaultSoundName;
            [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
            [[UIApplication sharedApplication] scheduleLocalNotification:notification];
            [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
    
            return YES;
    
        }
    
    0 讨论(0)
  • 2021-01-03 17:16

    You need to call

    [[UIApplication sharedApplication] scheduleLocalNotiication:localNotification];
    

    before you release localNotification. Your code does all the setup but doesn't actually schedule it, which is why you never get it.

    0 讨论(0)
提交回复
热议问题