読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin Insights ことはじめ

Xamarin Xamarin Insights

こんにちは。エクセルソフトの田淵です。

Xamarin Insights を軽く触ってみたのでご紹介します。(ドキュメント読んでサンプル動かしただけとも言うw)

Xamarin Insights とは?

Xamarin Insights は皆さんの作るアプリに Analytics と Crash Report の機能を追加する Xamarin のサービスで、2014年11月に開催された Evolve で発表されました。(Keynote のビデオ)

機能の詳細については Xamarin のドキュメントページ をご参照ください。Insights 登録後は こちら でもスタートガイド的なドキュメントを確認できます。

現在は Preview 版として、Xamarin ユーザーであればどなたでもご利用いただけますので、ベータテストなどで使ってみると良いかと思います。

ドキュメントページにあるサンプルアプリ Android Insights を落として動かしてみました。

How It Works

Xamarin Insights を使うには以下の手順が必要です。

  1. Initialize
  2. User Resistration
  3. Reporting

詳細はドキュメントページをご参照ください。 ユーザーを登録しておくと、Xamarin Insights.Traits.Name で名前を取得出来たりするようです。 レポートは try/catch して Insights.Report(ex) すればいい感じです。

インストール

最初に Xamarin Insights サイト に行き、Add New App でアプリを作成し、Copy the API Key に表示される API Key の値を控えておきます。 次にプロジェクトで NuGet から Xamarin.Insights をインストールします。 後は各 OS の書式に沿って Initialize します。

Android はいくつか Permission を追加する必要があり、iOS は正確なクラッシュログを取得するには dSYM ファイルをアップロードする必要があります。

クラッシュレポートの使い方

try/catch でエラーをレポートします。

try
{
     int divByZero = 42 / int.Parse("0");
}
catch (DivideByZeroException ex)
{
     Insights.Report(ex);
}

レポートが集まってグラフ化されるのには半日〜1日くらいかかるのですが、各エラーレポートはすぐに確認できます。 Insights のサイトで Users > ユーザー選択 > ISSUES を選択すると右下に表示されます。 スクリーンショット_2014-12-19_22_54_12.png

右下に表示されるエラーをクリックするとレポートの詳細が表示されます。レポートには情報を追加することもできます。

try
{
    var block = new byte[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    using (var text = File.OpenWrite(@"/bin/hello.txt"))
    {
        text.Write(block, 0, 10);
    }
}
catch (IOException ex)
{
    // see http://msdn.microsoft.com/en-us/library/system.exception.data%28v=vs.110%29.aspx for more details on this
    ex.Data["MoreData"] = "You can't write to the bin directory!";
    // send the report
    Insights.Report(ex);
    // throw the exception - this exception would need to be caught using another try/catch
    throw ex;
}

この IOException ex を catch した場合は次のようにエラーが確認できます。 スクリーンショット 2014-12-19 18.48.07.png

次のように try/catch 出来なかった想定外のエラーも収集できます。

btnCrash.Click += delegate
{
    var block = new byte[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    block[11] = 10;
};

スクリーンショット 2014-12-19 18.47.26.png

Event/Time Tracking

イベントや時間を取ることもできます。こちらは Google Analytics / Components / Xamarin みたいな機能かもしれません。が、時間がなくて触れませんでした。是非皆さんで確かめてみてください笑

以上です。