web-dev-qa-db-ja.com

Firebase-タイプ「AppDelegate」の値をタイプ「UNUserNotificationCenterDelegate?」に割り当てられませんか?

このチュートリアルを使用してfirebaseをデプロイすると、常にエラーがコンパイルされます。 https://firebase.google.com/docs/cloud-messaging/ios/client デプロイメントSDKは9.0です。

エラー:

どうすれば修正できますか?

タイプ「AppDelegate」の値をタイプ「UNUserNotificationCenterDelegate?」に割り当てることはできません。

最初のシナリオ-私が段階的に行ったこと(チュートリアルに従って):

  • 次のpod init:pod 'Firebase/Core' pod 'Firebase/Messaging'
  • ポッドインストール
  • AppDelegateクラスの上に「Firebaseをインポート」

2番目のシナリオ-githubリポジトリからダウンロードしたGoogleデモiOSクライアントアプリ( https://github.com/firebase/quickstart-ios の下の "messaging"フォルダー)

  • アプリをコンパイルしました...うまくいきました。
  • 次の手順に従って、既存のXCodeプロジェクトのロジックをコンパイルしました。
  • 次のpod init:pod 'Firebase/Messaging'
  • ポッドインストール
  • 以下をインポートしました:UIKit、UserNotifications、Firebase、FirebaseInstanceID、FirebaseMessaging

AppDelegateのコード:

func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // [START register_for_notifications]
        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(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }
        application.registerForRemoteNotifications()
        // [END register_for_notifications]
        FIRApp.configure()
        // Add observer for InstanceID token refresh callback.
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(self.tokenRefreshNotification),
                                               name: .firInstanceIDTokenRefresh,
                                               object: nil)
        return true
    }
13
user3427013

AppDelegateの最後に、2つの拡張機能(UNUserNotificationCenterDelegate、MessagingDelegate)を追加する必要があります。

このサンプルアプリのソースコードを参照してください: https://github.com/firebase/quickstart-ios/tree/master/messaging

21
user3427013