Visual Studioで記述されたWPFアプリケーションがあります。このWPFアプリにApplication Insightsを追加できますか?ボタン/タイルがクリックされた回数を知りたい。同じアプリケーションの複数のインストールがあるため、どのユーザー/インストールから、どのボタンが何回クリックされたかを知りたいです。これはApplication Insightsで実行できますか?
おかげでAvanti
サポートされているアプリの種類としてリストされていませんが、これは、アプリケーションインサイトに収集/送信されるデフォルトのテレメトリデータがないこと、またはAIの追加/アプリケーションインサイトリソースの作成のサポートがないことを意味します。言われている特定のシナリオ(ボタン/タイルクリックなど)を追跡できるように、いくつかの手動手順でWPFに追加することができると言われています。
-Visual Studioから「Application Insights API」NuGetをプロジェクトに追加します(.11が今日最新です)。
これにより、Application Insights APIリファレンスが追加され、プロジェクトにApplication Insights構成ファイルが作成されます。
Applicationinsights.configファイルは、次のようにインストルメンテーションキーで更新する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.Microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<TelemetryChannel>
<DeveloperMode>false</DeveloperMode>
</TelemetryChannel>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights"/>
</TelemetryModules>
<InstrumentationKey>**your-instrumentation-key-guid**</InstrumentationKey>
</ApplicationInsights>
Azureサブスクリプションへのアプリケーションインサイトインストルメンテーションキーログインを作成するには https://portal.Azure.com +をクリックしてApplication Insightsリソースを作成します。次に、アプリケーションインサイトブレードのプロパティタイルを選択し、インストルメンテーションキーをコピーして、applicationinsights.configファイルに追加します。これで、WPFアプリで、Application Insights sdkを次のように使用できます: http://blogs.msdn.com/b/visualstudioalm/archive/2014/10/21/application-insights-sdk-0- 11-0-prerelease.aspx
イベントは、アプリケーションの洞察ブレードで選択できる診断検索ブレードに表示されます。
注:テレメトリは、500を超えるテレメトリイベントがキューに入れられて送信されない限り、サービスに送信される前に1分間ローカルでバッチ処理されます。
https://Azure.Microsoft.com/en-us/documentation/articles/app-insights-windows-desktop/
Application InsightsをWindowsフォームアプリケーションに追加する方法に関するMicrosoftの公式リンク。リンクから:
Azure-portal.Azure.com
あなたのアプリケーションで
TelemetryClient
を構成します。WPFアプリケーションでMvvmCrossを使用しています。起動時に、アプリケーション全体で再利用する単一のTelemetryClient
を作成します。
var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "your key here from Azure";
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();
telemetryClient.Context.User.AccountId = Username;
telemetryClient.Context.Component.Version = Settings.Default.Version;
telemetryClient.TrackEvent("Application Start");
Mvx.RegisterSingleton<TelemetryClient>(telemetryClient);
「何かが起こった」ときはいつでも、私はTelemetryClient
を解決してイベントを記録します。これは、追跡と記録に関して、他のApplication Insights実装と同じです。
例として-
//Resolve the telemetry client
readonly TelemetryClient telemetryClient = Mvx.Resolve<TelemetryClient>();
//Record a page View with some extra information
var pageviewTelemetry = new PageViewTelemetry("Observations");
pageviewTelemetry.Properties.Add("Breadcrumb", breadcrumb);
telemetryClient.TrackPageView(pageviewTelemetry);
//Track an event
var eventTelemetry = new EventTelemetry("Observation Saved");
eventTelemetry.Properties.Add("Saved Observation", observation);
telemetryClient.TrackEvent(eventTelemetry);
//Track an exception
try
{
// do work here
}
catch (Exception ex)
{
telemeteryClient.TrackException(ex);
}
WindowsデスクトップアプリケーションのApplication Insightsは、何も自動的に収集/送信しません。開発者として、アプリケーションの終了時にフラッシュを強制する必要があります。
private void PowerButton_OnClick(object sender, RoutedEventArgs e)
{
var tc = Mvx.Resolve<TelemetryClient>();
if (null != tc)
{
tc.Flush(); // only for desktop apps
}
Application.Current.Shutdown();
}
または、スケジュールに従ってフラッシュするようにRxTimerをセットアップします...私は30分ごとにフラッシュすることにしました:
var observable = Observable.Interval(new TimeSpan(0, 0, 30, 0));
observable.Subscribe(_ => Application.Current.Dispatcher.Invoke(new Action(() =>
{
var tc = Mvx.Resolve<TelemetryClient>();
if (null != tc)
{
tc.Flush(); // only for desktop apps
Console.WriteLine("Flush TC");
}
})));
FYI-Application Insights API NuGetパッケージの0.17.0以降、オフラインの場合、フラッシュ呼び出しはハングしませんがハングしているようです。オンラインの場合、通話はすぐに完了し、オフラインの場合、通話が完了する前に5秒間しっかりと停止します。
デスクトップアプリケーション用のApplication Insights(AI)は廃止され、代わりに HockeyApp が採用されました。それはまだ成熟しすぎていませんが、機能します(イベントは基本的にAIイベントが行くのと同じ場所に到達します)。
たとえば、次のようになります RoslynPad (WPF C#エディター):
using Microsoft.HockeyApp;
//In your initialization method:
var hockeyClient = (HockeyClient)HockeyClient.Current;
hockeyClient.Configure(HockeyAppId)
.RegisterCustomDispatcherUnhandledExceptionLogic(OnUnhandledDispatcherException)
.UnregisterDefaultUnobservedTaskExceptionHandler();
var platformHelper = (HockeyPlatformHelperWPF)hockeyClient.PlatformHelper;
platformHelper.AppVersion = _currentVersion.ToString();
hockeyClient.TrackEvent("App Start");
//sometime later:
hockeyClient.TrackEvent("Something happened");
[〜#〜] edit [〜#〜]これが正しく機能するには、次のNuGetパッケージが必要であるように見えます: https ://www.nuget.org/packages/HockeySDK.WPF.TelemetryWorkaround ( https://github.com/bitstadium/HockeySDK-Windows/pull/88 を参照)。