Пример #1
0
        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 }));
        }