При добавлении каркаса UserNotifications в проект необходимо проверить 5 вещей:
1) Если вы имеете дело с удаленными уведомлениями, убедитесь, что вы включили это на странице настроек возможностей вашего проекта XCode.
См. рисунок 1
Если это приводит к ошибке, вам, вероятно, необходимо войти в свою учетную запись разработчика Apple и создать ключ с учетными данными для push-уведомлений. Конечный результат дает вам файл .p8 для загрузки. Создание этого файла устранит ошибку. Сам файл необходим на сервере, который отправляет push-уведомления вашему приложению / устройству. Если вам нужна помощь, ознакомьтесь с этим учебным пособием .
2) Добавьте строку импорта в начало файла AppDelegate
import UserNotifications
3) Добавьте UNUserNotificationCenterDelegate в строку объявления класса AppDelegate.
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {...
4) Установите для делегата UNUserNotificationCenter значение self в приложении: метод didFinishLaunchingWithOptions.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//...
UNUserNotificationCenter.current().delegate = self
//...
return true
}
5) Добавьте функции делегатов (если вы хотите их использовать)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
NSLog("Application delegate method userNotificationCenter:didReceive:withCompletionHandler: is called with user info: %@", response.notification.request.content.userInfo)
//...
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
NSLog("userNotificationCenter:willPresent")
//...
completionHandler([.alert])
}
Надеюсь, это поможет.