概要
最近はGodotでゲームを作っています。主にiOS、Androidアプリ向け。
そこで、Android, iOSアプリにそれぞれ、Firebaseを入れたいのですが、各々対応しないといけません。Androidのほうはプログラムを書く必要が無いので簡単でAndroid Studioのbuild.gradleに追記とgoogle-services.jsonを追加するだけです。(普通のアプリ開発の作業と同じ)
ただ、iOSのほうはプログラムの記述が必要なのでちょっと面倒です。いいプラグインがないか調べた結果、これを使うって定番のもなく、一応存在はするけど使ってみた感じいまいちだったので、自分で作ることにしました。
こちらです
https://github.com/funseek/godot-ios-firebase-analytics
プラグインの作成方法
これは公式ページに記載がありますので、こちらを参考にしました。
https://docs.godotengine.org/ja/stable/tutorials/platform/ios/ios_plugin.html
ざっくり言うと、
- Xcodeで新規プロジェクトを作成(Objective-C static library)
- HEADER_SEARCH_PATHSにgodotのheaderファイルの場所を書く
- OTHER_CFLAGSに項目追加
- プラグインのプログラムを書く
- 完了後ビルドして、.a or .xcframeworkを作成
- 拡張子がgdipというファイルを作成。中身はプラグインの詳細を記載
※この先はライブラリ読み込み側の話
- プロジェクトのHOMEディレクトリに作成したファイルたちをコピーする。ios/plugin/の下
- exportでiOSを選択。Pluginsのチェックボックスにチェックを入れる
使い方
git clone
リポジトリをcloneします。submoduleでgodot本体のリポジトリも入ってますので一緒に落とします。
git clone --recurse-submodules git@github.com:funseek/godot-ios-firebase-analytics.git
godot本体ソースのheaderファイルを作成
./scripts/generate_headers.sh
※結構時間がかかりますが、ヘッダーファイル自体はすぐ作られるので終わるのを待つ必要はないです。
pod install
Firebase関連のファイルはCocoaPodsで取得します。
pod install
.aライブラリファイルの作成
./scripts/release_static_library.sh 3.4
※今は3.4のみになってます。別のバージョン指定したい場合は、SConstructファイルの3.4の箇所を置換してください
プロジェクトにコピー
作成された.aファイルをgodotのプロジェクトにコピーします。
cp bin/release/firebase-analytics/firebase-analytics.*.a $GODOT_HOME/ios/plugins/firebase-analytics/bin/
cp firebase-analytics.gdip $GODOT_HOME/ios/plugins/
iOS用にエクスポート
iOS用にエクスポートしてください。PluginsのFirebase Analyticsの箇所のチェックを入れるのを忘れずに
Xcodeの設定
XcodeはCocoaPodsを使ってください。Podfileに以下を追記します。
pod 'Firebase/Analytics'
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
CocoaPodsを使う手順は以下です。
- pod initを実行(まだ使ってない場合)
- Podfileに上記を追記
- pod installを実行
- プロジェクト名.xcworkspaceのほうをXcodeで開く
- GoogleService-Info.plistをプロジェクトにコピー(Firebaseの管理画面からダウンロードできます)
これで無事動けば完了です
※外部ライブラリに依存するプラグインは外部ライブラリをそれぞれコピーして読み込む形が取られてることが多いのですが、プラグイン毎に依存ライブラリをコピーして使うと、同じライブラリでもバージョン違いとかでエラーになったりして面倒な気がしてます(実際になりました)。なので依存ライブラリはCocoaPodsで一括管理したほうがいいと思います(個人の感想です)。依存ライブラリの例として、Firebase, AdMobなど
その他
それ以外で以下のプラグインも作りました。
レビューリクエストダイアログを表示するプラグイン
https://github.com/funseek/godot-ios-request-review
ATTダイアログを表示するプラグイン
https://github.com/funseek/godot-ios-att
※ここまで書いて気づいたのですが、作ったプラグイン自体もCocoaPodsで読み込む形にすれば利用簡単なのでは?と思った。今度試して見ます