SwiftUIでFirebase Authentication(Google)を実装する
iPhoneアプリ開発初心者です。
Swift UIのサンプルコードが少なかったので、メモ程度に。
やっていることはこちらの方と一緒です。
SwiftUIでFirebase Authentificationを実装したかったのですが、AppDelegate周りがわからなかったので自分なりに補足しました。GitHubにもあとで公開します。
2021年2月11日現在、Firebase AuthentificationのチュートリアルはGoogleのドキュメントにもありますが、SwiftUIに対応したコードはありません。FirebaseApp.configure()
をYourSampleApp.swiftで呼ぶのがポイントです。
TL;DR;
- CocoaPodsでFirebaseUIをインストール
- FirebaseUISample.xcworkspaceを開く
- GoogleService-Info.plistをダウンロード
- URL SchemesにREVERSED_CLIENT_IDを追加
- コードをガリガリ書く
CocoaPodsでFirebaseUIをインストール
cd your-project-directory
pod init
pod install
pod init
するとカレントディレクトリにPodFileが生成される。# Pods for YourSampleの下に以下を追記する。
pod 'FirebaseUI/Auth'
pod 'FirebaseUI/Google'
pod FirebaseUI
のみでも良いが、コンパイルの時間が長くなるので必要なもののみにした方が良い。pod installで構築完了。失敗したときはカレントディレクトリのYourSample.xcworkspace, Podfile.lock, Podsフォルダを削除すると元どおり。
基本的にはGoogleのドキュメント通り。ここでは解説しないがCocoaPods自体の環境構築自体が一番大変。
FirebaseUISample.xcworkspaceを開く
Xcodeプロジェクトをすでに開いている場合、一度閉じる。その後、拡張子が「xcworkspace」のファイルを開く。CocoaPodsでインストールしたモジュールが使えるようになる。誤って拡張子が「xcodeproj」のものを開くとmodule not found
と表示される。
GoogleService-Info.plistをダウンロード
下記手順に従ってダウンロードする。
URL SchemesにREVERSED_CLIENT_IDを追加
下記手順に従ってREVERSED_CLIENT_IDを追加する。
コードをガリガリ書く
下記手順に従って、FirebaseUIView、FirebaseAuthStateObserver、ContentViewにコードをガリガリ書く。FirebaseUIView、FirebaseAuthStateObserverは新しくswiftファイルを足して書く。
YourSampleApp.swiftにはAppDelegateクラスを宣言してFirebaseApp.configure()
を呼ぶ。
import SwiftUI
import Firebase
@main
struct FirebaseUISampleApp: App {
@UIApplicationDelegateAdaptor (AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
}
参考
Discussion