0

Ich versuche zu lernen, wie man lokale Benachrichtigungen verwendet und derzeit versuche ich nur, eine Benachrichtigung nach einer bestimmten Zeit erscheinen zu lassen (um nur 5 Sekunden zu lernen).Swift: Lokale Benachrichtigungen werden nicht angezeigt, obwohl Anfrage/geplant zu funktionieren scheint - keine Fehler

ich registrieren, um die Benachrichtigung in dieser Funktion, die am Ende eines Onboarding-Bildschirm verwendet wird:

func registerNotification() { 

    let center = UNUserNotificationCenter.current() 

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in 
     if granted { 
      print("Granted.") 
     } else { 
      print("Not granted.") 
     } 
    } 
} 

nun die Benachrichtigung testen ich die Funktion Satz nur add() auf eine Taste:

set() { 

    let center = UNUserNotificationCenter.current() 

    let content = UNMutableNotificationContent() 
    content.title = "Test Notification" 
    content.body = "It works!" 
    content.categoryIdentifier = "alarm" 
    content.userInfo = ["customData": "fizzbuzz"] 
    content.sound = UNNotificationSound.default() 

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) 

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

Aber wenn die Taste gedrückt wird und 5 Sekunden vergangen sind, wird keine Benachrichtigung angezeigt, aber auch kein Fehler in Xcode, also sollte das alles funktionieren?

Was fehlt mir hier? Soweit ich das aus verschiedenen Quellen im Netz verstehe, ist dies der einfachste Weg, eine lokale Benachrichtigung anzuzeigen.

+1

Try debug es so: 'center.add (request) {(Fehler: Error) in lassen, wenn Fehler = Fehler { print (Fehler) } } ' – mcgtrt

+1

haben Sie im Hintergrundmodus versucht? – ivarun

+0

Prost für die Kommentare. Aus irgendeinem seltsamen Grund, nachdem ich meinen Mac und Xcode neu gestartet habe, funktionierte es. – RjC

Antwort

0

So eine UserNotification und rufen die Funktion an einer geeigneten Stelle registrieren:

func registerNotification() { 

    let center = UNUserNotificationCenter.current() 

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in 
     if granted { 
      print("Granted.") 
     } else { 
      print("Not granted.") 
     } 
    } 
} 

Diese Funktion setzt eine Benachrichtigung mit einem Zeitintervall von 5 Sekunden. Wenn die App geschlossen wird die Meldung angezeigt:

set() { 

    let center = UNUserNotificationCenter.current() 

    let content = UNMutableNotificationContent() 
    content.title = "Test Notification" 
    content.body = "It works!" 
    content.categoryIdentifier = "alarm" 
    content.userInfo = ["customData": "fizzbuzz"] 
    content.sound = UNNotificationSound.default() 

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) 

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