2017-08-03 3 views
0

bitte ich habe ein Problem darüber, wie kann ich die lokale Benachrichtigung zu bestimmten Zeitpunkt auslösen? ohne dass der Benutzer auslösen es und müssen die App zu einer bestimmten Zeit gefeuert lokalen Benachrichtigung zu bestimmten Zeit

folgende meinen Code lokale Benachrichtigung

gefeuert:

dies ist für die Erlaubnis erhalten, von dem Benutzer

func registerLocal() { 

    let center = UNUserNotificationCenter.current() 

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in 
     if granted { 
      print("Yay!") 
     } else { 
      print("D'oh") 
     } 
    } 
} 

// dies i planen Benachrichtigung lokalen func scheduleLocal() {

let center = UNUserNotificationCenter.current() 
    let content = UNMutableNotificationContent() 
    content.title = "Late wake up call" 
    content.body = "The early bird catches the worm, but the second mouse gets the cheese." 
    content.categoryIdentifier = "alarm" 
    content.userInfo = ["customData": "fizzbuzz"] 
    content.sound = UNNotificationSound.default() 



    var dateComponents = DateComponents() 
    dateComponents.hour = 3 
    dateComponents.minute = 19 
    dateComponents.day = 3 
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true) 

    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger) 
    center.add(request) 
    center.removeAllPendingNotificationRequests() 
} 

// ihr i nennen Thesen Methoden

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

      registerLocal() 
      scheduleLocal() 
     return true 
    } 

und wenn ich meine app schließe ich nicht die Benachrichtigung erhalten haben, helfen Sie bitte, wie kann ich die lokale Benachrichtigung zu einer bestimmten Zeit auslösen

dank

Antwort

1

Sie nicht center.removeAllPendingNotificationRequests() nach dem Hinzufügen Ihre Mitteilung rufen sollte , da die zuvor hinzugefügte Benachrichtigung ebenfalls gelöscht wird. Sie sollten vielmehr nach dem Aufruf überprüfen center.addRequest(request), ob Ihre Anfrage wurde tatsächlich hinzugefügt oder nicht von

center.getPendingNotificationRequests(completionHandler: { pendingRequest in 
    print("Pending notifications: \(pendingRequest)") //Just for debugging 
}) 

Oder Sie können auch einen Abschluss Handler addRequest an, welche einen Fehler zurück, wenn die Anforderung wurde erfolgreich hinzugefügt:

center.add(request, withCompletionHandler: { error in 
    print(error) 
}) 
Verwandte Themen