web-dev-qa-db-ja.com

Firebaseメッセージングでの「エラー:宣言されていない型のMessagingDelegateの使用」

最近、Firebaseメッセージングポッドを更新し、Firebaseのクイックスタートガイドに従ってアップグレードの必要な変更を行いました。

新しいextension AppDelegate : MessagingDelegate拡張機能を追加しましたが、特定のエラーが発生しました。

enter image description here

14

追加 import FirebaseMessagingページの上部にあると問題が解決します

33
Daniel Raouf

これは、firebaseのバージョンに関するものです。この場合、MessagingDelegateFIRMessagingDelegateに変更し、関数[START refresh_token]を

func messaging(_ messaging: Messaging, didReceiveRegistrationToken 
  fcmToken: String) {
     print("Firebase registration token: \(fcmToken)")

} 

func messaging(_ messaging: FIRMessaging, didReceiveRegistrationToken 
 fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}

そして最後

func messaging(_ messaging: Messaging, didReceive remoteMessage: 
  MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
 }

func applicationReceivedRemoteMessage(_ remoteMessage: 
     FIRMessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}

完全な答えは

extension AppDelegate : FIRMessagingDelegate {
    func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}

// [START refresh_token]

func messaging(_ messaging: FIRMessaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}}
3
taha

For Swift 4 to up:

使用しているFirebaseのバージョンは何ですか?ドキュメントによると、SwiftではFirebase 4.0.0のクラス名が変更されています。したがって、FIRMessagingDelegate、MessagingDelegateなどになります。移行ガイドを参照 こちら

2

エラーは、MessagingDelegateが宣言されていない型であると言います。次のように、Firebase Frameworkをインポートしていることを確認してください:

_import Firebase_

Firbeaseフレームワークをインポートするとエラー_no such module Firebase_が発生する場合は、まず_no such module Firebase_エラーを修正する必要があります。それを修正するには? FirebaseポッドのバージョンをSwift言語のバージョンと照合して確認する必要があります。おそらく、ご使用のFirebaseバージョンがSwift 4.0を使用している間、プロジェクトでSwift 3.0。

Swift 3.0専用のポッドをインストールしていることを確認するには、addで各ポッドのビルド設定のチェッカーをPodfileに追加できます。また、FirebaseのMessagingフレームワークをインストールしていることを確認してください。そのようです:

_pod 'Firebase/Auth'
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Messaging'

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['Swift_VERSION'] = '3.0'
        end
    end
end
_
1
Glenn

pod updateを使用してポッドファイルを更新します。ポッドの更新が更新に失敗した場合は、podfile.lockを削除してpod installを実行します

0
Haileapp