Attiva automaticamente le notifiche locali ogni giorno sul tempo dinamico indicato negli array Obiettivo c ios

Ho una serie di ore hoursArray e array di minuti minutesArray e sto ottenendo la current date dal sistema ora ho gli array che hanno gli elementi del mese corrente significa che se ci sono 30 giorni ad aprile ci saranno 30 ore / minuti in oreArray / minutesArray che ho inserito negli array e sto ottenendo la data corrente come indice degli array.

Quello che ho fatto è che gli avvisi si triggersno nel giorno corrente ma non si triggersno il giorno successivo finché non uso l’app ogni giorno perché quando uso l’app ogni giorno prima che venga richiamato il metodo dell’ora di triggerszione quando torno alla modalità background e agli anelli di notifica.

Ora voglio che le notifiche vengano triggerste automaticamente quando cambiano le date, anche quando non uso l’applicazione per un giorno, tutte queste cose dovrebbero essere in didEnterBackground... metodo di appDelegate

Ho seguito questa risposta , ma è usata per la stessa ora al giorno Ma voglio un tempo diverso ogni giorno dagli array basati sull’indice di matrici della data corrente (significa il giorno corrente ad es. Oggi è il 19 aprile l’indice di ore e minuti dell’array dovrebbe essere 19 ).

Ecco come sono i miei array

Serie di ore = [9, 10, 11, 13, 14, 11, 17, 2, 15, 5 …. e così via]

Array minuto = [23, 00, 04, 58, 59, 12, 01, 33, …. e così via]

chiamata metodo in appdelegate.m

 - (void)applicationDidEnterBackground:(UIApplication *)application { [self.viewController triggerAutomaticallyDaily]; [self applicationSignificantTimeChange:application]; [self refreshAlarm]; } 

metodo all’interno di viewcontroller.m

 -(void)triggerAutomaticallyDaily { NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar] ; NSDate *now = [NSDate date]; NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:now]; [components setHour:hoursArray[currentDay]]; //currentDay the todays date is 16 I am getting current date from system. [components setMinute:minutesArray[currentDay]]; UILocalNotification *notification = [[UILocalNotification alloc]init]; notification.fireDate = [calendar dateFromComponents:components]; notification.repeatInterval = NSDayCalendarUnit; [notification setAlertBody:@"This is your task time"]; // notification.soundName = UILocalNotificationDefaultSoundName; [[UIApplication sharedApplication] scheduleLocalNotification:notification]; } 

Modifiche significative all’ora dopo ogni mezzanotte, metodo in Appdelegate

 -(void)applicationSignificantTimeChange:(UIApplication *)application { [self.viewController triggerAutomaticallyDaily]; } 

Aggiorna il metodo di allarme in Appdelegate

 - (void)refreshLabel { //refresh the alarm on the main thread dispatch_async(dispatch_get_main_queue(),^{ [self.viewController triggerAutomaticallyDaily]; }); // check every 10000s [self performSelector:@selector(refreshLabel) withObject:nil afterDelay:10000]; } 

didEnterBackground... un’occhiata a didEnterBackground... quando didEnterBackground... dalla mia app, il metodo notication verrà chiamato una sola volta. non lo è ?? e come posso ricevere la notifica giornaliera quando non apro nemmeno l’app per una settimana ma voglio ricevere le notifiche, come verrà chiamato il metodo? è un metodo chiamato ogni volta in modalità background?

Esiste un modo per programmare la notifica e quando viene eseguita la prima notifica, la seconda dovrebbe essere triggersta e se la seconda operazione dovrebbe essere triggersta, quindi la terza in modalità sfondo non aprirò nemmeno l’app per una settimana? ? le notifiche devono essere triggerste in base alla data e all’ora correnti fornite negli array.

AGGIORNAMENTO Ho persino inserito la funzione di aggiornamento che aggiorna il trigger dopo ogni 10000 secondi ma non funziona.

Ho anche aggiunto modifiche significantTimechanges , se ci sono cambiamenti di mezzanotte, ma non funziona qui è come ho definito tutto.