В AppDelegate
вам необходимо сначала request authorization
от пользователя отправлять уведомления на устройство в application(_:didFinishLaunchingWithOptions:) method
, т.е.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound]) { (allowed, error) in
if allowed {
print("User has allowed notifications")
} else {
print("User has declined notifications")
}
}
return true
}
. В приведенном выше кодеВы можете предоставить options
согласно вашему требованию.Обратитесь по этой ссылке , чтобы узнать о более возможных options
.
Затем, как только пользователь authorization
успешно, вы можете запланировать notifications
, используя свой код.
Edit-1:
Только для отладки выполните код, установив значение future
как:
let future = Date(timeIntervalSinceNow: 10)
Это сnotification
после 10 seconds
из current Date()
.
Edit-2:
Действие saveMemory
выполняется следующим образом:
@IBAction func saveMemorey(_ sender: UIButton) {
let content = UNMutableNotificationContent()
content.title = "New Memory!"
content.subtitle = "A New Event Starts Today:"
content.body = ""
content.sound = .default
let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: future)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: "content", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
if error != nil {
print (error)
}
}
}
Edit-3:
Вот как я получаю future
date
, используя UIDatePicker
class VC: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
var future: Date {
return self.datePicker.date
}
@IBAction func saveMemorey(_ sender: UIButton) {
//your code here....
}
//rest of the code...
}
В приведенном выше коде future
это computed property
, что returns
независимоdate
устанавливается в datePicker
в этот момент времени.