0

I'm developing an application where I need to set the reminder for a particular day. I'm Using Local notification and finding the date of selected Day of current week.

this is my code:

In viewController.m

    NSArray* components12 = [self.LblTime.text componentsSeparatedByString:@":"];
    NSString *Hours = [components12 objectAtIndex:0];
    NSString *Minutes =[components12 objectAtIndex:1];

    NSDate *currentDate  = [NSDate date];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc]  initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorianCalendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

    NSDateComponents *components = [gregorianCalendar components:(NSYearCalendarUnit| NSMonthCalendarUnit
                                                                  | NSDayCalendarUnit| NSWeekdayCalendarUnit|NSWeekCalendarUnit)  fromDate:currentDate];

    NSLog(@"Current week day number %ld",(long)[components weekday]);
    NSLog(@"Current week number %ld",(long)[components week]);
    NSLog(@"Current month's day %ld",(long)[components day]);
    NSLog(@"Current month %ld",(long)[components month]);
    NSLog(@"Current year %ld",(long)[components year]);

    NSDateComponents *dt=[[NSDateComponents alloc]init];
    //Passing the Time (hours and minutes ) and Selected day with date
    [dt setHour: [Hours integerValue]];
    [dt setMinute:[Minutes integerValue]];
    [dt setSecond:0];
    [dt setWeek:[components week]];
    [dt setWeekday:selecteddayValue];/// set the week Selected ay from picker
    [dt setMonth:[components month]];
    [dt setYear:[components year]];
    NSDate *Date=[gregorianCalendar dateFromComponents:dt];// get the date of selected day of week
    NSLog(@"Sunday date :%@",Date);

    //Adding the reminder through Local notifiction
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.fireDate =Date;
    localNotification.alertBody = @"Ready For Next Workout!";
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    //    localNotification.applicationIconBadgeNumber = 1; // increment
    NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"Object 1", @"Key 1", @"Object 2", @"Key 2", nil];
    localNotification.userInfo = infoDict;
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    [self showAlert:@"Reminder set Successfully"];

in appDelegate:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
// Handle launching from a notification
UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (locationNotification) {
    // Set icon badge number to zero
    application.applicationIconBadgeNumber = 0;
}

return YES;
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
// Set icon badge number to zero
   application.applicationIconBadgeNumber = 0;
}

Now I'm not receiving the notification. Anyone please help for this.that would be very apperitiate.

Himanth
  • 2,381
  • 3
  • 28
  • 41
  • 1
    First of all UILocalNotification is deprecated in iOS10. Start using UNUserNotificationCenter instead. This link will help http://stackoverflow.com/questions/37938771/uilocalnotification-is-deprecated-in-ios10 – miOS Jan 02 '17 at 09:43

1 Answers1

0
 if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0)
{
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
    [application registerUserNotificationSettings:settings];
}
Matloob Hasnain
  • 1,025
  • 6
  • 21