私がこの分野で経験した唯一の経験は、Flurryです。分析のために使用したもので、クラッシュレポートでは使用しませんでした。
基本的に私たちが何をしたかはIAnalyticsインタフェースを使用してViewModelにからのすべての重要なイベントをログに記録し、その後、各プラットフォームのようなIAnalyticsの実装供給:
WP7:バインディングで使用
public class FlurryAnalytics : IAnalytics
{
public const string ApiKeyValue = "--- your key ---";
public void StartSession()
{
FlurryWP7SDK.Api.StartSession(ApiKeyValue);
}
public void LogEvent(string eventName)
{
FlurryWP7SDK.Api.LogEvent(eventName);
}
}
タッチを( )https://github.com/kevinmcmahon/monotouch-libs/blob/master/FlurryAnalytics/flurry.csのような:
public class FlurryAnalytics : IAnalytics
{
public const string ApiKeyValue = "37SHD8L8VATPBS88AMHU";
public void StartSession()
{
FlurryAPI.StartSession (ApiKeyValue);
}
public void LogEvent(string eventName)
{
FlurryAPI.LogEvent(eventName);
}
}
アンドロイド(もう少し複雑 - それは、すべてのフックを必要とする活動の開始/停止):
そこフラリーのドキュメントから、いくつかのブログから
public class FlurryAnalytics : IAnalytics, IAndroidActivityTracker
{
public const string ApiKeyValue = "--- your key ---";
private readonly IntPtr _flurryClass;
private readonly IntPtr _flurryOnStartSession;
private readonly IntPtr _flurryOnEndSession;
private readonly IntPtr _flurryLogEvent;
public FlurryAnalytics()
{
_flurryClass = JNIEnv.FindClass("com/flurry/android/FlurryAgent");
_flurryOnStartSession = JNIEnv.GetStaticMethodID(_flurryClass, "onStartSession",
"(Landroid/content/Context;Ljava/lang/String;)V");
_flurryOnEndSession = JNIEnv.GetStaticMethodID(_flurryClass, "onEndSession", "(Landroid/content/Context;)V");
_flurryLogEvent = JNIEnv.GetStaticMethodID(_flurryClass, "logEvent", "(Ljava/lang/String;)V");
}
public void StartSession()
{
// not used in Android - Android relies on Activity tracking instead
}
public void LogEvent(string eventName)
{
ExceptionSafe(() => JNIEnv.CallStaticVoidMethod(_flurryClass, _flurryLogEvent, new JValue(new Java.Lang.String(eventName))));
}
private static void ExceptionSafe(Action action)
{
try
{
action();
}
catch (ThreadAbortException)
{
throw;
}
catch (Exception exception)
{
UITrace.Trace("Exception seen in calling Flurry through JNI " + exception.ToLongString());
}
}
public void OnStartActivity(Activity activity)
{
ExceptionSafe(() => JNIEnv.CallStaticVoidMethod(_flurryClass, _flurryOnStartSession, new JValue(activity), new JValue(new Java.Lang.String(ApiKeyValue))));
}
public void OnStopActivity(Activity activity)
{
ExceptionSafe(() => JNIEnv.CallStaticVoidMethod(_flurryClass, _flurryOnEndSession, new JValue(activity)));
}
}
、私はこれはクラッシュ報告を含むように拡張することができると信じて:
しかし、それを試さずに、私はMonoDroidの内部でどれくらいうまく動作するかわかりませんd MonoTouch。
http://slodge.blogspot.co.uk/2012/04/using-flurry-analytics-from-monotouch.htmlで若干長い説明(回答が少ない)で更新されました – Stuart
ありがとうスチュアート、本当に面白いです。しかし、私が実際に何をしているかは、未処理の例外やAndroidのANRをトラップするためにMono *で使用しなければならないイベントや拡張ポイントです。ありがとう。 –