[Xamarin] Firebase Performance Monitoring を導入してみた (Android & iOS)

Xamarinで作ったアプリに「Firebase Performance Monitoring」を導入してみました。
2019.07.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いろいろ導入してみたので、この流れで Firebase Performance Monitoring も導入してみました!

目次

環境

  • Windows
    • Windows 10 Pro
    • Visual Studio Community 2019: 16.1.6
  • macOS
    • macOS Mojave 10.14.5
    • Visutal Studio Community 2019 for Mac: 8.1.5
    • Xcode: 10.2.1
  • Android
    • Pixel 3a: Android 9
  • iOS
    • iPhone 7: iOS 12.2
  • Xamarin
    • Xamarin: 16.1.0.545
    • Xamarin.Android SDK: 9.3.0.23
    • Xamarin.iOS and Xamarin.Mac SDK: 12.10.0.157
  • Library
    • 共通
    • Xamarin.Forms: 4.0.0.425677
    • Android
    • Xamarin.Firebase.Perf: 60.1142.1
    • iOS
    • Xamarin.Firebase.iOS.PerformanceMonitoring: 2.1.2

Xamarin.Formsアプリの作成とFirebaseプロジェクトの作成

下記で作成したXamarin.FormsアプリとFirebaseプロジェクトを流用します。

注意

いろいろ実験しましたが、実機のみで動作するみたいです。

Androidでやってみる

Firebase Performance Monitoring の導入

NuGetで下記のライブラリをAndroidプロジェクトに追加します。

  • Xamarin.Firebase.Perf

カスタムトレース

newTrace()メソッドが生えておらず、使用できませんでした……。

メソッドトレース

下記のようにできました。 using Com.Google.Firebase.Perf.Metrics;が必要です。

MainActivity.cs

[AddTrace(Name = "OnCreateTrace", Enabled = true)]
protected override void OnCreate(Bundle savedInstanceState)
{
}

アプリの実行

ビルドしてアプリを実行します。

ビルドエラー等が発生した場合は、下記を参考にしてください。

Firebaseプロジェクトのコンソールで確認する

Firebaseプロジェクトで「Performance」を選択します。

Performanceを選択する

どうやらすぐに反映されないようです。 ドキュメント上は12時間以内とのことです。

すぐに反映されない様子(Android)

iOSでやってみる

Firebase Performance Monitoring の導入

NuGetで下記のライブラリをAndroidプロジェクトに追加します。

  • Xamarin.Firebase.iOS.PerformanceMonitoring

カスタムトレース

下記のようにできました。 using Firebase.PerformanceMonitoring;が必要です。

AppDelegate.cs

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    // https://github.com/xamarin/GoogleApisForiOSComponents/issues/158#issuecomment-483194061
    var foo = Firebase.Core.Configuration.SharedInstance;

    Firebase.Core.App.Configure();
    Firebase.Crashlytics.Crashlytics.Configure();

    var trace = Performance.StartTrace("XamarinFormsInitTrace");

    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());

    trace.Stop();

    return base.FinishedLaunching(app, options);
}

メソッドトレース

iOSでは出来ないようです。(Firebase公式ドキュメントに記載が無いため)

アプリの実行

ビルドしてアプリを実行します。

ビルドエラー等が発生した場合は、下記を参考にしてください。

Firebaseプロジェクトのコンソールで確認する

Androidとおなじく、すぐに反映されないようです。

すぐに反映されない様子(iOS)

改めて確認する(後日)

Android

表示されました!

AndroidのPerformance(ダッシュボード)

でも、メソッドトレースは表示されないため、結果的に出来ないようです。残念。

AndroidのPerformance(デバイス)

iOS

iOSもバッチリです!

iOSのPerformance(ダッシュボード)

カスタムトレースも動いてました!(一番上のXamarinFormsInitTrace

iOSのPerformance(デバイス)

さいごに

今までハマりまくったので、今回はスムーズでした。(実機必須、に気づくまでは……)

参考