Ich konnte hier auf SO oder anderswo keine Hilfe für mein Problem finden, also hoffe ich, dass jemand von euch mir helfen kann.Benutzer nach lokalen Benachrichtigungen fragen und Aufgaben danach ausführen - Swift 2.0
Ich versuche, die Funktionalität einer Erinnerung in meiner iOS App zu implementieren, die der Benutzer selbst aktiviert. Die Erinnerung ist eine lokale Benachrichtigung.
Ich frage den Benutzer nicht um Erlaubnis für lokale Benachrichtigungen, bis er die Erinnerung aktiviert. Danach muss ich überprüfen, ob der Benutzer die Berechtigungen erteilt und eine Benachrichtigung geplant hat.
Das Kernproblem hier ist, dass der Code die Ausführung der Methode "registerUserNotificationSettings" nicht beendet und auf das Ergebnis des kommenden UIAlertControllers wartet. Daher kann ich direkt nach dem Aufruf der Methode nicht nach Berechtigungen suchen. Ich möchte auch nicht beim ersten Start der App um Erlaubnis fragen, weil der Benutzer nicht weiß, warum meine App Benachrichtigungen senden sollte und ich denke, dass dies für den ersten Start und für eine optionale Funktion zu viel wäre.
Ich weiß von der Appdelegate Nachricht didRegisterUserNotificationSettings, die gesendet wird, nachdem die Frage beantwortet wurde. Eine Idee besteht darin, zuerst die Benachrichtigung in einer globalen Variablen zu speichern und sie zu planen, wenn die Berechtigung erteilt wurde. Aber das wäre zu viel Code, der ausgeführt wird, wenn die Benachrichtigung nicht einmal am Ende geplant ist.
Also suche ich nach einer Lösung, um den Benutzer um Erlaubnis zu fragen und dann zu entscheiden, ob ich die Benachrichtigung erstellen und planen soll oder nicht.
Das ist mein problematisch Stück Code in dem'value changed'-Ereignisse eines UISwitch, die nicht wie erwartet funktionieren:
//check if the app is allowed to send notifications or ask the user
var settingTypes = UIApplication.sharedApplication().currentUserNotificationSettings()?.types
if (settingTypes?.contains(.Alert) == false) {
let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Sound], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)
//get NotificationSettings again after the user was asked
settingTypes = UIApplication.sharedApplication().currentUserNotificationSettings()?.types
}
//now check if if notifications are finally permitted
if (settingTypes?.contains(.Alert) == true) {
let notification = UILocalNotification()
* create notification *
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
else {
switchNotification.on = false
}
Hat jemand eine Idee? Vielen Dank im Voraus
Thank you very much! Das ist genau das, wonach ich gesucht habe. Ich bin neu zu schnell und habe schon über Schließungen gelesen, wusste aber nicht wirklich, wann ich sie benutzen sollte. Ich denke, ich kann sie jetzt auch in anderen Situationen verwenden. – Martin