2016-06-20 7 views
0

Wie behebt man dieses Problem? Dies ist mein Code:Objective-C: Ärgerlich - ich bekomme ca. 5-6 Benachrichtigungen pro Minute von meinem UILocalNotifications

NSDate *dateToSet = [NSDate dateWithTimeIntervalSinceNow:1.0]; 
NSString *message = @"Test notification"; 
UILocalNotification *warningNotification = [[UILocalNotification alloc] init]; 
warningNotification.fireDate = dateToSet; 
warningNotification.timeZone = [NSTimeZone defaultTimeZone]; 
warningNotification.alertBody = message; 
warningNotification.hasAction = NO; 
warningNotification.userInfo = nil; 
warningNotification.repeatInterval = NSCalendarUnitDay; 
warningNotification.soundName = nil; 
[[UIApplication sharedApplication] scheduleLocalNotification:warningNotification]; 

Und mein AppDelegate.m (didFinishLaunchingWithOptions):

UIUserNotificationType types = UIUserNotificationTypeSound | UIUserNotificationTypeAlert; 
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; 

if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){ 
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 
} 

[[UIApplication sharedApplication] scheduledLocalNotifications]; 
[application registerForRemoteNotifications]; 

enter image description here

+0

Was macht diese Zeile: '[[UIApplication sharedApplication] planedLocalNotifications];'? – Avi

+0

Eigentlich bin ich neu bei UILocalNotifications, das ist mein erstes Mal, dass ich es für meine neue App verwende, ich habe diese Codes aus Tutorials im Internet hinzugefügt (nicht von mir selbst). –

Antwort

-1

Es wenn das Objekt Null-Objekt als Parameter der Methode addObserver ist vorbei passieren kann: Selektor: Name: Objekt :, dann kann es Benachrichtigungen von allen Systemen erhalten, die unerwünscht sind.

+0

Dies ist eine lokale Benachrichtigung, die den Benutzer von NSDate benachrichtigt, wie kann ich das hinzufügen? Schritt für Schritt bitte ... –

0

Es sieht aus wie Sie Konfiguration Ihre Mitteilung eine Sekunde in der Zukunft entlassen werden, mit dieser Zeile:

NSDate * dateToSet = [NSDate dateWithTimeIntervalSinceNow: 1,0];

Und die Einstellung des Intervalls auf NSCalendarUnitDay konfiguriert es an einem Tag erneut zu feuern. Stattdessen, wenn Sie eine Benachrichtigung für den nächsten Tag einstellen möchten, versuchen Sie dies:

//Present the local notification at the specified time in the future 
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

//Next day 
NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
dateComps.day = 1; 

NSDate *today = [NSDate date]; 
NSDate *futureDate = [cal dateByAddingComponents:dateComps toDate:today options:0]; 

notification.fireDate = futureDate; 

Die folgende Zeile alle geplanten lokalen Meldungen abruft, aber Sie haben nicht das Array zu einer Variablen zuweisen.

[[UIApplication sharedApplication] geplantLokaleNotifikationen];

Wenn Sie wirklich eine Reihe von lokalen Meldungen benötigen, dann ist diese versuchen:

NSArray *localNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications]; 

Ich hoffe, das hilft!

+0

Danke für Ihre Antwort, aber es wird nicht funktionieren! Was ist diese Linie? notificationDate = futureDate; und auch ich setze das fireDate auf meine benachrichtigung zu deinem futureDate, stimmt das? warningNotification.fireDate = futureDate; –

+0

Wo soll ich dieses Array verwenden? (localNotification), weil es sagt, unbenutzte Variable. –

+0

@AlandKawa Ich habe die Antwort aktualisiert, um der Benachrichtigung das zukünftige Datum zuzuweisen. In Bezug auf Ihre Frage zu dem localNotifications-Array habe ich das dort eingefügt, um Ihre Codezeile zu korrigieren, die keinem Array zugewiesen wurde. Wenn Sie diese Zeile nicht benötigen, können Sie sie einfach entfernen. – Sheamus

Verwandte Themen