2016-12-15 6 views
2

Ich möchte eine Funktion erstellen, die ein Ereignis zurückruft. 10 Minuten, 20 Minuten, 1 Stunde im Voraus.So planen Sie Benachrichtigungen im Voraus?

Wie vorgehen?

-(void)programmer_un_rappel_sans_avance{ 

    NSDate *fireDate = [picker_date date]; 

    UILocalNotification *local_rappel_notification = [[UILocalNotification alloc]init]; 
    local_rappel_notification.fireDate = fireDate; 
    local_rappel_notification.alertBody = @"VOUS AVEZ UN VOL MAINTENANT !!"; 
    local_rappel_notification.timeZone = [NSTimeZone defaultTimeZone]; 
    local_rappel_notification.soundName = UILocalNotificationDefaultSoundName; 
    local_rappel_notification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 

    [[UIApplication sharedApplication ]scheduleLocalNotification:local_rappel_notification]; 
} 
+0

Welche Version ios Sie verwenden ?? –

+0

Ich benutze IOS 10.2 SDK –

Antwort

0

allererst von iOS 10, Apple hat von UILocalNotifications veraltet und sie haben extrem erstaunlich Rahmen für reiche Benachrichtigungen UserNotifications Rahmen genannt eingeführt. Daher empfehle ich Ihnen, dieses Framework zu verwenden, anstatt es zu verwerfen. This Post hat die Verwendung dieses Frameworks in einer sehr einfachen Art und Weise erklärt. Obwohl der Beitrag Swift Codierung beschreibt, können Sie die Idee erhalten und in Objective-c konvertieren oder Sie können auch this Tutorial folgen, die in swift und objective-c erläutert.

Es gibt verschiedene Arten von Benachrichtigungen Auslöser, die Sie verwenden können:

  1. UNTimeIntervalNotificationTrigger: Aktiviert die Benachrichtigung zu nach dem bestimmten Zeitintervall gesendet werden. Kann das Zeitintervall wiederholen, wenn erforderlich ist.
  2. UNCalendarNotificationTrigger: Benachrichtigt Benutzer mit Datumskomponenten z. Auslöser um 8 Uhr morgens. Es kann auch wiederholt werden.
  3. UNLocationNotificationTrigger: Fügt die Fähigkeit hinzu, auszulösen, wenn der Benutzer einen bestimmten Standort betritt oder verlässt.

In Ihrem Fall können Sie UNCalendarNotificationTrigger verwenden.

EDIT: Für Ihre Anforderung tun wie folgt aus:

NSCalendar *calendar = [NSCalendar currentCalendar]; 

NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday) fromDate:[NSDate date]]; 
NSDateComponents *time = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:your_date]; 
components.hour = time.hour; 
components.minute = time.minute - time_you_want_to_fire_notification_before; //ex. if you want to fire notification before 10 mins then -10 from time.minute 

und diese Benachrichtigung Verwendung Feuer:

UNCalendarNotificationTrigger* trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES]; 
+0

OK. Ich benutze bereits ein Kommissionierdatum. Was muss ich meinem Code hinzufügen, um 10 Minuten im Voraus benachrichtigt zu werden? –

+1

Ich habe meine Antwort aktualisiert. Bitte nachsehen. –

+0

Vielen Dank –

Verwandte Themen