最近、Firebaseメッセージングポッドを更新し、Firebaseのクイックスタートガイドに従ってアップグレードの必要な変更を行いました。
新しいextension AppDelegate : MessagingDelegate
拡張機能を追加しましたが、特定のエラーが発生しました。
追加 import FirebaseMessaging
ページの上部にあると問題が解決します
これは、firebaseのバージョンに関するものです。この場合、MessagingDelegate
をFIRMessagingDelegate
に変更し、関数[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)")
}}
For Swift 4 to up:
使用しているFirebaseのバージョンは何ですか?ドキュメントによると、SwiftではFirebase 4.0.0のクラス名が変更されています。したがって、FIRMessagingDelegate、MessagingDelegateなどになります。移行ガイドを参照 こちら
エラーは、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
_
pod update
を使用してポッドファイルを更新します。ポッドの更新が更新に失敗した場合は、podfile.lockを削除してpod install
を実行します