#概要
元々スキルアップと自己満足のために、モバイルアプリを個人開発したいと思っていたので、作ってリリースした。
その際にFirebase(正確にはFirebase Analytics)とAdMobを導入したので、流れを備忘録的に残しておく。
なぜUnity?
視覚的に作れて比較的実装が簡単、かつクロスプラットフォームに対応しているから。
なぜAdMob?
広告表示処理を実装したかったから。
Unity AdsでもよかったけどAdMobの方が収益性高いとどこかの記事で読んだから(個人開発レベルだとあんま関係ない…w)
なぜFirebase?
ログ送信処理を実装したかったから。
#Androidアプリへの導入
連携の流れは、以下の画像の通り。
##Firebase
なんだかんだ公式サイトに書いてある通りに導入すればいい。
ちょっとわかりにくいが、Firebaseコンソールの導入フローまで行くと懇切丁寧にサポートしてくれる。
Androidの場合は構成ファイルがjson形式でダウンロードされる。
SDK導入と構成ファイルの配置が終わったら、準備完了。
Firebase Analyticsのイベントには自動で収集されるイベント、推奨イベント、カスタムイベントの3つがあり、このうち後者2つはソース内で明示的にログ送信処理を記述する必要がある。
自動で収集されるイベントはこちら、Firebase側で用意されている推奨イベントはこちら。
例えば、推奨イベントの1つであるEventAppOpen
(アプリ起動時のログ送信)の場合、タイトル画面で呼び出されるスクリプトのStart()とかに以下の1行を記述すればいい。
Firebase.Analytics.FirebaseAnalytics.LogEvent(Firebase.Analytics.FirebaseAnalytics.EventAppOpen);
自分で作成したカスタムイベントの場合は以下の通り。こちらはエラーが起きた際に送信されるイベントで、第一引数にイベント名、第二引数にパラメータ名、第三引数にパラメータ値をセットしている。
Firebase.Analytics.FirebaseAnalytics.LogEvent("ADMOB_LOAD_ERROR", "message", args.Message);
ちなみにカスタムイベントのパラメータはFirebase Analytics側から確認できないことがある(Big Query連携が必要)。
その際も推奨イベントを利用することで、パラメータを確認することが可能になる。
参考 -> 実装事例紹介:Firebase Analyticsでカスタムイベントログ収集
##AdMob
こちらも基本的には公式サイトに書いてある通りに導入。
予めAdMob側でアプリを登録して広告ユニットを作っておき、発行されたAppIDはUnityの設定画面に、adUnitIDはソースの呼び出したい箇所に記述する(テストの際はテスト用のadUnitIDを使うこと!破るとBANされる可能性あり!)。
筆者はインタースティシャル広告を導入したが、それも公式からソースコードをコピペするだけで動いた。
ただし本番用の広告はサーバや端末の状態でたまにロードに失敗することもあるらしい。
参考 -> インタースティシャル広告
##Firebase
基本的にはAndroidと同じ。
iOSの場合は構成ファイルがplistでダウンロードされる。
Androidのjsonとの共存も可能。Unity側のプラットフォーム切り替えでよしなに判断してくれるらしい。
Firebaseプロジェクト作成時に、両方のプラットフォーム一括で登録もできるし、あとから片方だけ追加することも可能。
##AdMob
こちらも基本的にはAndroidと同じ。
プラットフォームが異なる場合は、別のアプリとして登録する必要がある(当然AppIDやadUnitIDも異なる)。
#結論
Google最強すぎる。
自分でサーバとか立てなくても、無料でログ送信や広告配信ができるのはすばらしすぎる。
画像にもある通り、FirebaseとAdMobをリンクさせることも可能で、リンクするとFirebase側から収益額などを確認できる。
ちなみに作ったゲームアプリはこちら。
iOS版は執筆時点で、Appleから謎のアカウント審査があり、
We are unable to continue this app’s review because your Apple Developer Program account is currently under investigation for not following the App Store Review Guidelines’ Developer Code of Conduct.
のメッセージだけ送られて、3ヶ月間放置状態なのでAndroid版だけ。
(5/22 iOS版も無事公開されました!)