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

がりらぼ

WindowsRuntimeの応援ブログ

Windows Azure MobileServiceを使ってアプリのバグ情報を収集する方法

アプリをリリースしたあともしくはデバッグ中に、アプリのどこで例外が発生したのかトラッキングしたいものです。

でもリリース後とかだと、ローカルテキストに保存しては開発者が例外情報を見ることが出来ません。

そこでWindowsAzureMobileServiceを使ってアプリのバグデータを収集しましょう。

Windowsストアアプリでは例外が発生し、何者にもキャッチされなかったとき、AppクラスのUnhandledExceptionイベントが発生します。

そこでモバイルサービスに情報を送信してバグ情報を収集しましょう。

まずテキトーなモバイルサービスを作成し、

f:id:garicchi:20140422031938p:plain

ダッシュボードから「キー管理」を選択します。 そこでアクセスキーを取得

アプリのApp.xaml.csに モバイルサービスの名前とアプリケーションキーを自分のものに変えて、

public static MobileServiceClient MobileService = new MobileServiceClient(
    "https://{mobileservicename}.azure-mobile.net/",
    "{Application Key}"
);

AppクラスのコンストラクタでUnhandledExceptionイベントを取得します。 UnhandledException内でawaitするとアプリが情報を送信せずに終了しちゃうので10秒待機。

public App()
{
    this.InitializeComponent();

    this.UnhandledException += (s, e) =>
    {
        MobileService.GetTable<ExceptionItem>().InsertAsync(new ExceptionItem
        {
            Exception = e.GetType().ToString(),
            Message = e.Message,
            Sender = e.Exception.Source.ToString()
        }).Wait(TimeSpan.FromSeconds(10));
    };
}

ExceptionItemクラスを作成します。

public class ExceptionItem
{
    public string Id { get; set; }
    public string Exception { get; set; }

    public string Sender { get; set; }
    public string Message { get; set; }
}

あとはモバイルサービス上に ExceptionItemテーブルを作成します。

これでモバイルサービスにデータを送信できます。

画像がTwitter経由なのは今月のフォトライフの使用制限に達したためです。