web-dev-qa-db-fra.com

Utilisation d'options de type UNAuthorization non déclarées

J'essaie d'utiliser Firebase pour gérer les notifications Push. J'ai installé le pod Firebase (pods 'Firebase/Core' et 'FirebaseMessaging').

Et après avoir importé Firebase dans le projet

import Firebase

J'ai configuré l'application Firebase comme ceci (le code est copié à partir des documents officiels):

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

Après cela, j'ai essayé d'utiliser ce code (le code est copié à partir des documents officiels):

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()

Mais j'ai eu l'erreur du titre qui dit:

Utilisation d'options de type UNAuthorization non déclarées

j'ai également la même erreur liée à la classe UNUserNotificationCenter.

J'utilise Swift 2.2 et Xcode 7.3.1

Quelle est la cause de cette erreur?

19
Whirlwind

UserNotifications.framework Est disponible à partir d'iOS 10 et vous travaillez avec Xcode 7.3 signifie avec iOS 9 et inférieur, il n'est donc pas nécessaire d'ajouter cette if #available(iOS 10.0, *) {, d'écrire uniquement une autre partie directement et de vous inscrire notifications à distance.

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

tu dois import UserNotifications avant d'appeler ces framework. Et ce que Nirav D a dit est vrai, c'est un nouveau cadre dans iOS 10, devrait également se rappeler de sélectionner la bonne cible de déploiement.

22
Pang Ho Ming