Firebase Authenticationでクラッシュ(iOS)

Firebase Authenticationでクラッシュ(iOS)

久しぶりにiOSのコードをイジっていました。最近は自身のサービスのユーザ管理をFirebase Authenticationに移行することを検討しています。理由は自身のサービスで認証を管理したくないからです。

Firebase AuthでGoogleのログイン検証をしていたのですが、普通にチュートリアル通りに進めても、クラッシュしてしまいました。クラッシュするタイミングはGoogleのログインページ(WebView)でログイン処理が完了後、アプリに戻ってくるところです。下記のようなエラーが出てしまいます。

[GTMSessionFetcher setFetcher:forTask:]: unrecognized selector sent to instance

自身が管理するところではないので、結構面倒な問題なのですが、2,3時間でやっと解決というか、なんとか問題は起こらなくなりました。実施したことを以下にまとめます。

  • クリーン、ビルド
    • 基礎の基礎。 →解決せず
  • 各種ライブラリのアップデート
    • しばらく放置していたので、ある程度最新にしました。FabricやClashlyticsはバージョン指定がチュートリアルの指示ですが、古くなっていたので他のFirebaseライブラリと不整合が発生していると考えて、最新へ。→解決せず
  • Swiftバージョンを4.2中心に変更して、コードも変換。
    • Pod系がビルドが通らなくなったので、Swift language versionは4.0と指定 →解決せず
  • ライブラリの削除
    • GTMSessionFetcherはNSURLSessionのラッパーらしいので、他の通信を利用するライブラリと干渉しているのではないかと仮説。「GTMSessionFetcher makes it easy for Cocoa applications to perform http operations. The fetcher is implemented as a wrapper on NSURLSession, so its behavior is asynchronous and uses operating-system settings on iOS and Mac OS X.」
      • AppsFlyerの削除 → 削除せず
      • NewRelicの削除 → 解決?

真の原因かわかりませんが、エラー検知のために昔から利用していたNewRelicを削除したところ、すんなり動くようになりました。他の要素も関係している可能性がありますが、今後、エラー検知はCrashlyticsで十分なため、一旦解決とします。参考になれば。