[Unity] Firebase Analytics導入

公式サイトにヘルプはあります。

Unity プロジェクトに Firebase を追加する

使用したUnity: 2018.3.1f1

入れたい対象は、iOSとAndroidですが、ビルド対象をAndroidにして進めます。

現状すでにAdMobを入れているプロジェクトで、Androidモジュールの自動的な更新が多めに動く感じなので、こちらがいいかなと。

Firebase用の設定ファイルをダウンロード

Firebaseのアナリティクスを、結構いろんなアプリに入れてますが、AdMobのWebページから、Firebase側に自動追加のように追加しているため、Firebase側で登録したことがありません。


この『アプリの設定』から、Firebaseへのリンクができます。
Firebase上のひとつの既存アカウントへ、どんどん追加していくような感じですね。

リンクする時に設定ファイルのダウンロードもできた記憶ですが、この『アプリの設定』にあるファイルボタンから、Firebaseのアプリページに遷移し、ダウンロードできます。

Firebaseのページから到達する場合は、Firebaseの自分のアカウントページ、Project Overviewを開き、「◯個のアプリ」のところをクリック。
表示される一覧から、今回入れたいアプリを探して、歯車マーク、または設定途中に表示される赤いマークのボタンをクリック。

iOSとAndroidでファイル名が異なります。

iOS用アプリの設定ファイル
GoogleService-Info.plist

Android用アプリの設定ファイル
google-services.json

FirebaseSDKをダウンロードし、dotnet4/FirebaseAnalytics.unitypackageを、ダブルクリックから、全部インポート。

Firebase Unity SDK
https://firebase.google.com/download/unity

設定ファイルをUnityプロジェクトのアセットフォルダーの直下へとりあえず配置してましたが、うまく動作せず。
場所はどこでも良いと書いてはありましたが、どこでもよくはないようです。

firebaseのunitypackageを取り込んだ後で、Firebaseフォルダーに配置しました。

Player Settings->Other Settingsは、dotnet4フォルダーのものを入れたので、.NET 4.xに。
最近は64bitビルドが必須となるので、Scripting BackendをIL2CPP、ARM64にチェックを。

これでファイル周りの導入は終了です。

Firebase初期化コード

最初のシーンで、DontDestroyOnLoadとしているオブジェクトのAwakeに入れました。
この初期化コードは、公式ヘルプのステップ6にあります。

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
    //   app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

この初期化だけで、Android側はsession_startのイベントが送信されるようです。

しかしなぜかiOS側はピコーンとなりません。

よくわからないので、EventAppOpenを両方のOSで送っておくと、いいんだと思います。
上記初期化内の、初期化完了地点で、送っておきます。

    // Set a flag here to indicate whether Firebase is ready to use by your app.
    Firebase.Analytics.FirebaseAnalytics.LogEvent(Firebase.Analytics.FirebaseAnalytics.EventAppOpen);

EventAppOpenを入れると、iOS側で両方来ました。Android側も同じになってるはず。

iOSビルドは、Podsがくっついてくるので、xcodeprojではなく、xcworkspaceのファイルを開いてビルドします。
Unity-iPhone.xcworkspace

ただそのままビルドすると、nanopb clang: error: -fobjc-weak 云々なエラーが出ましたが、Xcode内で推奨される設定(Recommend Settings)を言われるがままオンにしてビルドすると、すんなりビルドできます。

あと注意点は、AdMobのことになるけれど、アプリIDの設定がiOS/Android双方に必要ですね。
[AdMob][iOS] GADApplicationIdentifier を追加しないとクラッシュ
[AdMob][Android] The Google Mobile Ads SDK was initialized incorrectly
ここは本記事内容とは違うところですが。

イベントの送信

上の方ですでに送ってましたが。

Analyticsのイベント送信は、こちらに記載があります。
Unity 用 Firebase 向け Google アナリティクスを使ってみる
https://firebase.google.com/docs/analytics/unity/start?hl=ja

Firebase.Analytics.FirebaseAnalytics.LogEvent(対象とするイベント);

イベントの記録も簡単です。

クラスのリファレンス
Firebase.Analytics.FirebaseAnalytics
https://firebase.google.com/docs/reference/unity/class/firebase/analytics/firebase-analytics

自分でつけた名称と値を送信する場合、予約された利用できない名前もありますね。

Firebase.Analytics.Parameter
https://firebase.google.com/docs/reference/unity/class/firebase/analytics/parameter

 The "firebase_", "google_" and "ga_" prefixes are reserved and should not be used.

ヘルプページに記載があるように、AdMobのUnityパッケージは独立しているため、そもそも競合は起きない作りになっているんだと思います。
すでにAdMobを入れているプロジェクトへ、まぁまぁスムーズに導入できました。

と、Playストアに上げたところ、ひとつの警告が。

Android App Bundleという機能を有効化すると、ターゲットデバイス毎のバイナリ配布をしてくれるようです。

Unity 2018.3 ベータ版での Android App Bundle(AAB)サポート
https://blogs.unity3d.com/jp/2018/10/03/support-for-android-app-bundle-aab-in-unity-2018-3-beta/

Androidビルド時、Build App Bundle(Google Play)チェックを入れるだけでした。
このビルドは時間がかかるので、リリース用の時だけにすべきと上記blogに記載がありますね。
この機能は現在、Google Play専用のようです。

拡張子がapkではなくaabが生成されます。
このaabファイルをDeveloper Consoleへアップロードします。

iOSは、UIApplicationExitsOnSuspend(リスト表示はApplication does not run in background)に警告が出るようになったのでinfo.plistから削除。値をYESにしているアプリはそうそう無いと思います。YESの場合、ホーム画面に戻った時にアプリが終了されますので。


Catch! for マスコットアプリ文化祭2018

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォロミー

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください