Sto sviluppando un'app calendario composta da più eventi (ad esempio 500 eventi) che consiste in compleanni. Sto scaricando gli eventi dal servizio web. Voglio dare all'utente l'avviso su ogni data di nascita in un momento specifico, seduto alle 10:00 del giorno del compleanno. Uso la notifica locale per pianificare un avviso, ma sono bloccato perché iOS consente solo 64 notifiche per app e ho più compleanni. Non so come programmare più notifiche una volta che l'app supera il limite. Si prega di suggerire come risolverei questo problema. qui di seguito è il mio codice per programmare le notificheCome pianificare più notifiche locali in iOS quando la notifica supera il limite di 64
- (void)scheduleNotification:(NSMutableArray *)datesArray withMessage:(NSMutableArray *)messagesArray NotificationID:(NSString *)notificationID
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setDateFormat:@"dd/MM/yyyy"];
// NSDate *myTime = [formatter dateFromString:@"06:10 PM"];
NSDate *myTime = [formatter dateFromString:fireTime];
for (int i = 0; i < [datesArray count]; i++)
{
NSDate *myDate = [formatter1 dateFromString:[datesArray objectAtIndex:i]];
NSDateComponents *dateComponents = [calendar components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:myDate];
NSDateComponents *timeComponents = [calendar components:NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:myTime];
NSDateComponents *newCompoents = [[NSDateComponents alloc]init];
NSDateComponents *todayComponents = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
int day = [dateComponents day];
int month = [dateComponents month];
[newCompoents setDay:[dateComponents day]];
[newCompoents setMonth:[dateComponents month]];
if (day >= [todayComponents day] && month >= [todayComponents month]) {
NSLog(@"day = %d, month = %d", day, month);
[newCompoents setYear:[todayComponents year]];
}
else{
NSLog(@"%d, %d", day, month);
[newCompoents setYear:[todayComponents year]+1];
}
[newCompoents setHour:[timeComponents hour]];
[newCompoents setMinute:[timeComponents minute]];
NSDate *combDate = [calendar dateFromComponents:newCompoents];
localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = combDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
// Notification details
NSString *message = [@"Wish" stringByAppendingFormat:@" %@%@", [messagesArray objectAtIndex:i],@" On His Birthday"];
localNotif.alertBody = message;
// Set the action button
localNotif.alertAction = @"View";
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;
// Specify custom data for the notification
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:notificationID forKey:notificationID];
localNotif.userInfo = infoDict;
// Schedule the notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
}
mi corregga se sto facendo errori e suggerire come pianificare più notifiche volta 64 limite è attraversata.
IMO è possibile riprogrammare LocalNotification ogni volta che si apre l'app, come controllare il conteggio LocalNotifications totale pianificato e se è inferiore a 64, riprogrammare lì .. – Bala
e basta dare un'occhiata a questa risposta http://stackoverflow.com/a/7721445/1059705 – Bala
sì, posso contare il numero totale di notifiche usando quel metodo. cosa intendi quando apri la tua app. devo controllare il conteggio nel delegato della mia app e programmare più notifiche. – suhit