Это часть моего кода.Я хочу использовать UNUserNotificationCenter
и UNUserNotificationCenterDelegate
для обработки событий уведомления.
Этот код перехватывает событие уведомления, когда приложение находится в состоянии переднего плана.Но "didReceive"
не запускается для фонового состояния.
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UNUserNotificationCenter.current().delegate = self
application.registerForRemoteNotifications()
return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
print("willPresent") /// This works
completionHandler([.alert, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
print("didReceive") /// This doesn't work
completionHandler()
}
Но если я не использую UNUserNotificationCenter.current().delegate = self
, метод делегата корректно запускается в фоновом режиме.
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping FetchCompletionHandler) {
print("didReceiveRemoteNotification... \(userInfo)")
}
Как я могу использовать «didReceive»?Я хочу обработать уведомление в фоновом режиме.