前回、以下の記事を書いたのですが、書いた後に GoogleSignInSwift という Product があることを認識しました。
GoogleSignIn は Objective-C x UIKit で実装されているのに対し、
GoogleSignInSwift は Swift x SwiftUI で実装されています。
また、カスタマイズのためのプロパティも後者の方が1個増えてたので、GoogleSignInSwift 版の記事も書いてみるか、と思い立ちました。
環境
- Xcode 13.4.1
- Firebase 9.0.0
- GoogleSignin 6.0.0 の GoogleSignInSwift(GoogleSignではない方)
- iPhone 13 (15.5) Simulator:ライトモード
カスタマイズ可能な部分
GIDSignInButton
クラスのコードを確認したところ、そのクラスから提供されているカスタマイズ可能なプロパティは、以下3つです。(プロパティ名は違えど、最初の2つは GoogleSignIn と同じで、 最後が新しく追加されたもの)
-
GoogleSignInButtonStyle
:レイアウトのスタイル -
GoogleSignInButtonColorScheme
:カラースキーム -
GoogleSignInButtonState
:状態 → 🆕
レイアウトのスタイル
現時点で定義されているタイプは、以下の3つになります。(GoogleSignIn の Product と変わらない)
-
standard
:表示テキストは「Sign in」 -
wide
:表示テキストは「Sign in with Google」 -
icon
:アイコンのみ
standard |
wide |
icon |
---|---|---|
カラースキーム
現時点で定義されているタイプは、以下の2つになります。(GoogleSignIn の Product と変わらない)
-
dark
:ダーク →という名前だけど色は青 -
light
:ライト
dark |
light |
---|---|
状態
これは GoogleSignInSwift になって新しく追加されたプロパティです。
現時点で定義されているタイプは、以下の3つになります。
以下はGoogleSignInButtonColorScheme
が.light
だったときの話になります。
想像できるとは思うのですが、ボタンのUIは、GoogleSignInButtonState
とGoogleSignInButtonColorScheme
の組み合わせによって変わりますので、dark
の時はまた違ったUIになります。ただボタンが押下可能か、といったアクション部分は変わりないのではと思います。(ちゃんと検証したわけではないですが、、)
-
normal
:白いUIで、押下可能でGoogleでサインインするためのアラート画面が表示される -
disabled
:ボタン押下不可 -
pressed
:押された状態のUI(薄いグレー)になっているが、押下可能でGoogleでサインインするためのアラート画面が表示される
normal |
disabled |
pressed |
---|---|---|
コード
GoogleSignInSwift の場合は、UIViewRepresentable に準拠した実装は不要になります。
import SwiftUI
import GoogleSignInSwift
struct SignInView: View {
var body: some View {
GoogleSignInButton(scheme: .light, style: .standard, state: .normal) {
// do something
}
}
}
おわりに
簡単すぎるせいかわからないですが、あまり GoogleSignInSwift
についての記事が見当たらなかったので、書いてみました。
どなたかのお役に立てば幸いです。そして何か間違い等ありましたら、ご指摘いただけますと嬉しいです。