public static void EnableCrash(this Kidozen.KidoApplication app, Context context) { AndroidEnvironment.UnhandledExceptionRaiser += delegate(object sender, RaiseThrowableEventArgs e) { var ex = e.Exception; var stack = new System.Diagnostics.StackTrace(ex, true); var frame = stack.GetFrame(0); var filename = frame.GetFileName(); var linenumber = frame.GetFileLineNumber(); var methodname = frame.GetMethod().Name; var classname = frame.GetMethod().DeclaringType.FullName; var fullstack = ex.StackTrace.Replace("\n", String.Empty); var reason = ex.GetType().Name; var appVersionCode = context.PackageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.MetaData).VersionCode; var appVersionName = context.PackageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.MetaData).VersionName; var message = C.Crash.CreateCrashMessage("monotouch", Build.Device, Build.Model, Build.VERSION.Release, filename, linenumber, methodname, classname, fullstack, reason, appVersionName, appVersionCode.ToString()); storeCrash(message); System.Diagnostics.Debug.WriteLine("about to exit application"); AOS.Process.KillProcess(AOS.Process.MyPid()); }; processPending(app.marketplace, app.application, app.key); }
public static void EnableCrash(this Kidozen.KidoApplication app) { AppDomain.CurrentDomain.UnhandledException += delegate(object sender, UnhandledExceptionEventArgs e) { var ex = e.ExceptionObject as Exception; var stack = new System.Diagnostics.StackTrace(ex, true); var frame = stack.GetFrame(0); var filename = frame.GetFileName(); var linenumber = frame.GetFileLineNumber(); var methodname = frame.GetMethod().Name; var classname = frame.GetMethod().DeclaringType.FullName; var fullstack = ex.StackTrace.Replace("\n", String.Empty); var reason = ex.GetType().Name; var appVersionCode = NSBundle.MainBundle.InfoDictionary["CFBundleShortVersionString"].ToString(); var message = C.Crash.CreateCrashMessage("monotouch", UIDevice.CurrentDevice.Name, UIDevice.CurrentDevice.SystemName, UIDevice.CurrentDevice.SystemVersion, filename, linenumber, methodname, classname, fullstack, reason, appVersionCode, appVersionCode); storeCrash(message); }; processPending(app.marketplace, app.application, app.key); }
public static Task Authenticate(this Kidozen.KidoApplication app) { currentApplication = app; var url = A.fetchConfigValue("signInUrl", app.marketplace, app.application, app.key); var authController = new PassiveAuthViewController(url.Result.Replace("\"", string.Empty)); authController.AuthenticationResponseArrived += HandleAuthenticationResponseArrived; var navController = new UINavigationController(authController); #if __UNIFIED__ UIApplication.SharedApplication.Delegate.GetWindow().RootViewController.PresentViewController(navController, true, new Action(() => Debug.WriteLine("passive view loaded")) ); #else UIApplication.SharedApplication.Delegate.Window.RootViewController.PresentViewController(navController, true, new NSAction(() => Debug.WriteLine("passive view loaded")) ); #endif return(Task.WhenAny(new Task[] { dummyPassiveAuthenticationTask, dummyPassiveFailTask })); }