Repeat UILocalNotification daily at 5 pm

后端 未结 2 956
野的像风
野的像风 2021-01-15 04:38

How to repeat UILocalNotification daily at 5 pm ? Following is my code to set custom time. But i want to notify the user daily at custom or may be static time. I am using iO

相关标签:
2条回答
  • 2021-01-15 05:14

    Use this. It may help you

    NSDateFormatter *dat= [[NSDateFormatter alloc]init];
    [dat setLocale:[NSLocale currentLocale]];
    [dat setTimeZone:[NSTimeZone systemTimeZone]];
    
    //[dat setDateFormat:@"YYYY-MM-dd"];// YYYY-MM-dd hh:mm a
    //NSString *dateM=[dat stringFromDate:datM];
    //[dat setDateFormat:@"YYYY-MM-dd h:mm a"];
    NSDate *reminderDate=[NSDate date];
    reminderDate =[reminderDate dateByAddingTimeInterval:1*24*60*60];
    
    UILocalNotification  *missingDreamNotify=[[UILocalNotification alloc]init];
    missingDreamNotify.fireDate=reminderDate;
    missingDreamNotify.timeZone = [NSTimeZone defaultTimeZone];
    missingDreamNotify.alertBody = @"Reminder is set";
    missingDreamNotify.alertAction = @"Show me";
    missingDreamNotify.soundName = UILocalNotificationDefaultSoundName;
    missingDreamNotify.applicationIconBadgeNumber = 1;
    missingDreamNotify.repeatInterval = NSDayCalendarUnit;
    
    [[UIApplication sharedApplication] scheduleLocalNotification:missingDreamNotify];
    
    0 讨论(0)
  • 2021-01-15 05:17

    Here's my solution, utilizing NSCalendar:

    // called in didFinishLaunchingWithOptions
    /* 
    
     cancel all local notifications at start up and reset them
     as repeating notifications.
    
     processDailyNotifications
        register to system
        cancel all
        for i in notifArray:
            setDailyNotificationAtHour:minute:
    
     setDailyNotificationAtHour:minute:
     */
    
    - (void)processDailyNotifications
    {
    
        UIApplication *application = [UIApplication sharedApplication];
        // are you running on iOS8?
        if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
        {
            UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotificationTypeSound) categories:nil];
            [application registerUserNotificationSettings:settings];
        }
        else // iOS 7 or earlier
        {
            UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
            [application registerForRemoteNotificationTypes:myTypes];
        }
    
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    
        [@[@{@"hour":@0,@"minute":@58},@{@"hour":@0, @"minute":@59}] enumerateObjectsUsingBlock:^(NSDictionary *item, NSUInteger idx, BOOL *stop) {
            [self setDailyNotificationAtHour:[[item valueForKey:@"hour"] integerValue] minute:[[item valueForKey:@"minute"] integerValue]];
        }];
    }
    
    - (void)setDailyNotificationAtHour:(NSInteger)hour minute:(NSInteger)minute
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDate *now = [NSDate date];
        NSDate *expected = [calendar dateBySettingHour:hour minute:minute second:0 ofDate:now options:NSCalendarMatchStrictly];
    
        UILocalNotification *notification = [[UILocalNotification alloc] init];
        notification.fireDate = expected;
        notification.alertAction = @"记录";
        notification.alertBody = @"记录时间";
        notification.soundName = UILocalNotificationDefaultSoundName;
        notification.applicationIconBadgeNumber = 1;
        notification.repeatInterval = NSDayCalendarUnit;
        ALog(@"%ld, %ld, %@", (long)hour, (long)minute, [expected descriptionWithLocale:[NSLocale currentLocale]]);
    
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }
    
    0 讨论(0)
提交回复
热议问题