2016-07-01 6 views
2

Ich möchte ein tägliches Benachrichtigungssystem für meine App einrichten. Es sollte den Benutzer zweimal am Tag informieren, einmal um 8:00 Uhr morgens (Hey, da ist dein Satz von Morgendosen fertig. Willst du es auschecken?) Und einmal um 19:00 Uhr (Ssup! Deine Abenddosis wartet drinnen) . Ich weiß, dass ich damit in einem Monat keine Benachrichtigungen mehr erhalten werde, da es eine Obergrenze von 64 Benachrichtigungen gibt (für lokale Benachrichtigungen), aber bis dahin wird die App live sein und ich werde die Einrichtung der Aktualisierung von Remote-Benachrichtigungen abschließen.Planen Sie lokale Benachrichtigungen zu bestimmten Zeiten am Tag

Ich habe diese Frage angeschaut: How to schedule a same local notification in swift und der .Day ist alles gut. Ich muss nur wissen, wie man es zu den angegebenen Zeiten zweimal am Tag macht. Danke im Voraus!

EDIT: wie Sie die spezifische Zeit auf die Benachrichtigung einstellen ist Teil des Problems. Die NSDate API gibt mir lustige Zeitintervalle (seit jetzt/seit 1973). Ich möchte es nur um 19 Uhr in Brand setzen. : -/Mit diesen NSDate Apis kann ich es nicht so recht machen, wenn ich etwas nicht verpasse.

Antwort

2
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    let settings = UIUserNotificationSettings(forTypes: .Badge, categories: nil) 
    UIApplication.sharedApplication().registerUserNotificationSettings(settings) 

    let localNotification1 = UILocalNotification() 
    localNotification1.alertBody = "Your alert message 111" 
    localNotification1.timeZone = NSTimeZone.defaultTimeZone() 
    localNotification1.fireDate = self.getEightAMDate() 
    UIApplication.sharedApplication().scheduleLocalNotification(localNotification1) 

    let localNotification2 = UILocalNotification() 
    localNotification2.alertBody = "Your alert message22" 
    localNotification2.timeZone = NSTimeZone.defaultTimeZone() 
    localNotification2.fireDate = self.getSevenPMDate() 
    UIApplication.sharedApplication().scheduleLocalNotification(localNotification2) 
    return true 
} 

func getEightAMDate() -> NSDate? { 
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
    let now: NSDate! = NSDate() 

    let date10h = calendar.dateBySettingHour(8, minute: 0, second: 0, ofDate: now, options: NSCalendarOptions.MatchFirst)! 
    return date10h 
} 

func getSevenPMDate() -> NSDate? { 
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
    let now: NSDate! = NSDate() 

    let date19h = calendar.dateBySettingHour(19, minute: 0, second: 0, ofDate: now, options: NSCalendarOptions.MatchFirst)! 
    return date19h 
} 
+0

hey! Danke für die Antwort ... schnell ... Ich hatte gehofft, du würdest mir sagen, wie ich die Zeit auf 8: 00/19 Uhr einstellen soll, weil die NSDate-API mir keine Option gibt, die Zeit direkt einzustellen . nur 'timeIntevalSinceNow/1970/reference' usw. Oder soll ich einen davon benutzen? Wenn ja, wie würde ich darüber gehen? Danke –

+0

Ich habe die Antwort aktualisiert und versucht. Es funktioniert – ronan

+0

Danke Haufen Kumpel. Ich denke, der Kalender ist, was ich nicht wusste. Sah sich um und ein paar Leute hatten das gleiche Problem. Anscheinend wird die Kalender-API in der Dokumentation nicht aktualisiert. Aber ich muss das bestätigen. Wie auch immer, du bist ein Held Kumpel! –

Verwandte Themen