Как определить, когда запланированное уведомление было запущено в Swift 4 - PullRequest
0 голосов
/ 07 мая 2018

Я создал запланированное уведомление, и я хотел бы иметь возможность делать что-то, как только оно будет доставлено. Не один раз, когда на него щелкают или выбирают, а когда он фактически доставлен и отображается на экране пользователя.

Код, который я использовал для создания уведомления:

let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: "foo", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey: "bar", arguments: nil)


var dateInfo = DateComponents()
dateInfo.hour = 7
dateInfo.minute = 0
print(dateInfo.hour!)
print(dateInfo.minute!)

let trigger = UNCalendarNotificationTrigger(dateMatching: dateInfo, repeats: false)
// Create the request object.
let notificationRequest = UNNotificationRequest(identifier: "MorningAlarm", content: content, trigger: trigger)
center.add(notificationRequest)

Я уверен, что мне нужно добавить что-то в мой AppDelegate, которое будет отвечать, когда уведомление доставлено, но я искал по всему интернету и не могу найти способ сделать это при доставке, а чем при выборе.

1 Ответ

0 голосов
/ 07 мая 2018

Когда приходит уведомление, система вызывает метод userNotificationCenter(_:willPresent:withCompletionHandler:) делегата объекта UNUserNotificationCenter.

 let center = UNUserNotificationCenter.current()  
 center.delegate = self // What delegation target Here is my AppDelegate




extension AppDelegate : UNUserNotificationCenterDelegate {
               // while your app is active in forground

             // Handle Notifications While Your App Runs in the Foreground

             func userNotificationCenter(_ center: UNUserNotificationCenter,
                                            willPresent notification: UNNotification,
                                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
                    let userInfo = notification.request.content.userInfo

                    // Change this to your preferred presentation option
                    // Play a sound.
                    //  completionHandler(UNNotificationPresentationOptions.sound)
            }

              // While App is inactive  in background
                func userNotificationCenter(_ center: UNUserNotificationCenter,
                                            didReceive response: UNNotificationResponse,
                                            withCompletionHandler completionHandler: @escaping () -> Void) {
                    let userInfo = response.notification.request.content.userInfo

                    // While App is inactive  in background


                    print(userInfo)


                    completionHandler()
                }
        }
...