App CenterのAnalyticsを使う.
www.slideshare.net
アプリケーションの利用状況やクラッシュ
App Center SDKの導入
App Centerの各アプリケーションのトップに表示されるGetting Startedにもあるように以下の2ステップで導入できます.
- Nugetからパッケージのインストール
以下の3つのパッケージをインストールする.
次のパッケージはTurnip Trackerではインストールされていたが,用途がよくわからない.
App Centerに登録したアプリケーションのOverview
には大切な情報が書いてある.
ここにGetting Started
という情報があって,そこにはApp.xaml.csのOnStartメソッドに以下のように書けとある.
Xamarin.NativeとXamarin.Formsで書き方が異なるので注意.
androidの********
の部分にはGUIDが書かれているのだが,これ,ただのサンプルコードではなく,このGUIDを使わないとApp Center SDKから情報が送られないようだ.
AppCenter.Start("android=**************************;" + "uwp={Your UWP App secret here};" + "ios={Your iOS App secret here}", typeof(Analytics), typeof(Crashes));
てっきりこれは記述例だと思っていたので,適当な文字列を使用したらまったくApp Centerにデータが送られてこないので困った.
App Centerでは1つのアプリでもプラットフォームごとに登録していくのだが,おそらく各プラットフォームのGetting Started
にそのプラットフォーム用のGUIDの情報が表示されるのだろうと思う.
さて,Start
メソッドについて.
1つ目の引数はApp Secret
とある.
2つ目以降は使用するServiceで,例えばCrashesとAnalyticsを使うのであれば上記のように列挙する.
今回はOnStartメソッドに以下のように書いた.
各プラットフォームごとのApp Secretは同じ文字列を使ってはいけない,とのこと.
protected override void OnStart() { string android = this._config["AppCenter_AppSecret_Android"]; string ios = this._config["AppCenter_AppSecret_iOS"]; string uwp = this._config["AppCenter_AppSecret_UWP"]; AppCenter.Start($"android={android};" + $"uwp={uwp};" + $"ios={ios}", typeof(Analytics), typeof(Crashes)); }
appsettings.jsonに記載された情報を取得して使用する.このあたりの仕組については以前に書いた記事を参考にする.
機密情報はApp Centerの環境変数に設定しておき,コード内には記述しないようにしている. App Centerのビルドスクリプトで機密情報を差し込み,ビルドしている.
使ってみる
ユーザーの行動をトラッキングしたい箇所で,「名前」と必要に応じて「任意の情報」をDictionary形式で付加する.
Analytics.TrackEvent("OpenBrowser", new Dictionary<string, string> { ["sessionId"] = SessionInfo.SessionID, ["uri"] = uri, });
そして実行してみると,それぞれTrackEvent
メソッドを挿入した箇所を処理が通ると,App CenterのAnalytics
にデータが表示される.
オフラインの場合
10MBまでローカルストレージに保存する.
10MBを超えたら古いものから削除していく.
オンラインになったときに50個一気に送るか,3秒ごとに送信する?