Подтвердить что ты не робот

Использование необъявленного типа UNAuthorizationOptions

Я пытаюсь использовать Firebase для обработки push-уведомлений. Я установил Firebase pod ( "Firebase/Core" и "FirebaseMessaging" ).

И после того, как я импортировал Firebase в проект

import Firebase

Я настроил приложение Firebase как это (код скопирован из официальных документов):

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)
-> Bool {FIRApp.configure() }

После этого я попытался использовать этот код (код скопирован из официальных документов):

if #available(iOS 10.0, *) {
            let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: {_,_ in })

            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.current().delegate = self
            // For iOS 10 data message (sent via FCM)
            FIRMessaging.messaging().remoteMessageDelegate = self

        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }

        application.registerForRemoteNotifications()

Но я получил ошибку из названия, которая гласит:

Использование необъявленного типа UNAuthorizationOptions

также я получаю ту же ошибку, связанную с классом UNUserNotificationCenter.

Я использую Swift 2.2 и Xcode 7.3.1

В чем причина этой ошибки?

4b9b3361

Ответ 1

UserNotifications.framework доступен с iOS 10, и вы работаете с Xcode 7.3 с iOS 9 и ниже, поэтому вам не нужно добавлять это if #available(iOS 10.0, *) {, напрямую записывать только часть else и регистрировать удаленные уведомления.

let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()

Ответ 2

вам нужно import UserNotifications перед вызовом этих фреймворков. И то, что сказал Nirav D, верно, это новая структура в iOS 10, также следует помнить о выборе правильной цели развертывания.