Пример #1
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            FormsMaps.Init();
            SvgImageRenderer.Init();
            ExtendedTextCellRenderer.Init();
            RoundedBoxViewRenderer.Init();

            global::Xamarin.Forms.Forms.ViewInitialized += (object sender, ViewInitializedEventArgs e) => {
                // http://developer.xamarin.com/recipes/testcloud/set-accessibilityidentifier-ios/
                if (null != e.View.StyleId)
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                    Console.WriteLine("Set AccessibilityIdentifier: " + e.View.StyleId);
                }
            };

                        #if DEBUG
            // requires Xamarin Test Cloud Agent component
            Calabash.Start();
                        #endif

            LoadApplication(new App());

            return(base.FinishedLaunching(app, options));
        }
Пример #2
0
        /// <summary>
        /// Finisheds the launching.
        /// </summary>
        /// <returns><c>true</c>, if launching was finisheded, <c>false</c> otherwise.</returns>
        /// <param name="uiApplication">User interface application.</param>
        /// <param name="launchOptions">Launch options.</param>
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            Forms.Init();

            // http://forums.xamarin.com/discussion/21148/calabash-and-xamarin-forms-what-am-i-missing
            Forms.ViewInitialized += (sender, e) =>
            {
                // http://developer.xamarin.com/recipes/testcloud/set-accessibilityidentifier-ios/
                if (null != e.View.StyleId)
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            FormsMaps.Init();

            // Code for starting up the Xamarin Test Cloud Agent
            #if ENABLE_TEST_CLOUD
            Calabash.Start();
            #endif
            CrossGeofence.Initialize <CrossGeofenceListener>();
            this.LoadApplication(new App());

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
Пример #3
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            #region configure context
            SensusContext.Current = new iOSSensusContext
            {
                Platform = Sensus.Context.Platform.iOS,
                MainThreadSynchronizer = new MainConcurrent(),
                SymmetricEncryption    = new SymmetricEncryption(SensusServiceHelper.ENCRYPTION_KEY)
            };

            // iOS introduced a new notification center in 10.0 based on UNUserNotifications
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorizationAsync(UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Alert);
                UNUserNotificationCenter.Current.RemoveAllDeliveredNotifications();
                UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests();
                UNUserNotificationCenter.Current.Delegate = new UNUserNotificationDelegate();
                SensusContext.Current.CallbackScheduler   = new UNUserNotificationCallbackScheduler();
                SensusContext.Current.Notifier            = new UNUserNotificationNotifier();
            }
            // use the pre-10.0 approach based on UILocalNotifications
            else
            {
                UIApplication.SharedApplication.RegisterUserNotificationSettings(UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, new NSSet()));
                SensusContext.Current.CallbackScheduler = new UILocalNotificationCallbackScheduler();
                SensusContext.Current.Notifier          = new UILocalNotificationNotifier();
            }
            #endregion

            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // facebook settings
            Settings.AppID       = "873948892650954";
            Settings.DisplayName = "Sensus";

            Forms.Init();
            FormsMaps.Init();
            MapExtendRenderer.Init();
            new SfChartRenderer();
            ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            LoadApplication(new App());

#if UI_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
Пример #4
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            // Code to start the Xamarin Test Cloud Agent
                        #if ENABLE_TEST_CLOUD
            Calabash.Start();
                        #endif

            return(true);
        }
Пример #5
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
#if ENABLE_TEST_CLOUD
            Calabash.Start();
#endif

            Forms.Init();
            CachedImageRenderer.Init();

            LoadApplication(new App());

            return(base.FinishedLaunching(app, options));
        }
Пример #6
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            window = new UIWindow(UIScreen.MainScreen.Bounds);

            viewController            = new UINavigationController(new CreditCardValidationScreen());
            window.RootViewController = viewController;
            window.MakeKeyAndVisible();

#if DEBUG
            Calabash.Start();
#endif

            return(true);
        }
Пример #7
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
            Calabash.Start();
#endif

            Forms.Init();
            AnimationViewRenderer.Init();

            LoadApplication(new App());

            return(base.FinishedLaunching(app, options));
        }
Пример #8
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
#if ENABLE_TEST_CLOUD
            Calabash.Start();
#endif

            //this.ConfigureHockeyApp();

            Dependencies.InitializeDemo();
            //Dependencies.Initialize<Authentication>();

            Theme.Default.Apply();

            return(true);
        }
Пример #9
0
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
#if DEBUG
            Calabash.Start();
#endif

            Forms.Init();

            AuthenticationConfiguration.Init();
            UIApplication.SharedApplication.StatusBarHidden = false;

            FormsMaps.Init();

            LoadApplication(new App(new PlatformInitializer()));

            return(base.FinishedLaunching(app, options));
        }
Пример #10
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            var mainViewModel = new MainViewModel();

            mainViewModel.RequestHomePage       = OnRequestHomePage;
            mainViewModel.RequestOnboardingPage = OnRequestOnboardingPage;

            _lifecycleService.OnStart();

                        #if DEBUG
            Calabash.Start();
                        #endif

            Insights.Initialize(Settings.XamarinInsightsApiKey);

            return(true);
        }
Пример #11
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
#if ENABLE_TEST_CLOUD
            Calabash.Start();
#endif
            Forms.SetFlags("SwipeView_Experimental");

            Popup.Init();
            Forms.Init();

            App.ScreenWidth  = UIScreen.MainScreen.Bounds.Width;
            App.ScreenHeight = UIScreen.MainScreen.Bounds.Height;

            LoadApplication(new App());

            return(base.FinishedLaunching(app, options));
        }
Пример #12
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            Forms.Init();

            FormsMaps.Init();

            LoadApplication(new App());

            ConfigureTheming();

            ImageCircleRenderer.Init();

            #if ENABLE_TEST_CLOUD
            Calabash.Start();
            #endif

            return(base.FinishedLaunching(app, options));
        }
Пример #13
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            #if ENABLE_TEST_CLOUD
            Calabash.Start();
            #endif

            #if DEBUG
            Calabash.Start();
            #endif


            // affects all UISwitch controls in the app
            UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47);

            Forms.Init();
            LoadApplication(new App());
            return(base.FinishedLaunching(app, options));
        }
Пример #14
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            _window = new UIWindow(UIScreen.MainScreen.Bounds);

            var setup = new Setup(this, _window);

            setup.Initialize();

            var startup = Mvx.Resolve <IMvxAppStart>();

            startup.Start();


            Calabash.Start();


            _window.MakeKeyAndVisible();

            return(true);
        }
Пример #15
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            // create a new window instance based on the screen size
            window = new UIWindow(UIScreen.MainScreen.Bounds);

            // make the window visible
            window.MakeKeyAndVisible();

            // create our nav controller
            navController = new UINavigationController();

            // create our home controller based on the device
            if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
            {
                homeViewController = new HomeScreen();
            }
            else
            {
                homeViewController = new HomeScreen(); // TODO: replace with iPad screen if we implement for iPad
            }

            // Styling
            UINavigationBar.Appearance.TintColor = UIColor.FromRGB(38, 117, 255); // nice blue
            UITextAttributes ta = new UITextAttributes();

            ta.Font = UIFont.FromName("AmericanTypewriter-Bold", 0f);
            UINavigationBar.Appearance.SetTitleTextAttributes(ta);
            ta.Font = UIFont.FromName("AmericanTypewriter", 0f);
            UIBarButtonItem.Appearance.SetTitleTextAttributes(ta, UIControlState.Normal);

            // push the view controller onto the nav controller and show the window
            navController.PushViewController(homeViewController, false);
            window.RootViewController = navController;
            window.MakeKeyAndVisible();

#if DEBUG
            Calabash.Start();
#endif

            return(true);
        }
Пример #16
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            if (InsightsManager.IsEnabled)
            {
                Insights.Initialize(Keys.InsightsApiKey);
            }

            Calabash.Start();

            Forms.Init();
            ImageCircleRenderer.Init();
            ToastNotifier.Init();

            //We're using the value of the StyleId as the accessibility identifier for use w/ Xamarin UITest / XTC
            Forms.ViewInitialized += (sender, e) =>
            {
                if (null != e.View.StyleId)
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            var atts = new UITextAttributes {
                Font = UIFont.FromName("SegoeUI", 22),
            };

            UINavigationBar.Appearance.SetTitleTextAttributes(atts);

            var barButtonAtts = new UITextAttributes {
                Font = UIFont.FromName("SegoeUI", 16),
            };

            UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
            UIBarButtonItem.Appearance.SetTitleTextAttributes(barButtonAtts, UIControlState.Normal);
            UIBarButtonItem.Appearance.SetBackButtonTitlePositionAdjustment(new UIOffset(0, -100), UIBarMetrics.Default);

            LoadApplication(new App());
            ProcessPendingPayload(options);

            return(base.FinishedLaunching(app, options));
        }
Пример #17
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        /// <summary>
        /// Finisheds the launching.
        /// </summary>
        /// <param name="app">The application.</param>
        /// <param name="options">The options.</param>
        /// <returns></returns>
        public override Boolean FinishedLaunching(UIApplication app,
                                                  NSDictionary options)
        {
            AppDomain.CurrentDomain.UnhandledException += this.CurrentDomainOnUnhandledException;
            TaskScheduler.UnobservedTaskException      += this.TaskSchedulerOnUnobservedTaskException;

            this.Device         = new iOSDevice();
            this.AnalysisLogger = new AppCenterAnalysisLogger();

            Forms.Init();

            Calabash.Start();

            SfBorderRenderer.Init();
            SfButtonRenderer.Init();
            SfTabViewRenderer.Init();

            this.LoadApplication(new App(this.Device, this.AnalysisLogger));

            return(base.FinishedLaunching(app, options));
        }
Пример #18
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            //Xamarin Insights
            Insights.Initialize(Keys.XamarinInsightsKey);
            Insights.HasPendingCrashReport += PurgeCrashReports;

            #if DEBUG
            //BeerDrinkin.Core.Helpers.Settings.FirstRun = true;
            Calabash.Start();
            #endif

            //Windows Azure
            CurrentPlatform.Init();
            SQLitePCL.CurrentPlatform.Init();

            Client.Instance.BeerDrinkinClient.InitializeStoreAsync();

            SetupGlobalAppearances();
            ConfigureJudoPayments();

            return(true);
        }
Пример #19
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            InsightsInitialization.Initialize(new iOSInsightsInitializer(UIDevice.CurrentDevice.IdentifierForVendor.AsString()), SensusServiceHelper.XAMARIN_INSIGHTS_APP_KEY);

            SensusContext.Current = new iOSSensusContext(SensusServiceHelper.ENCRYPTION_KEY);
            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // facebook settings
            Settings.AppID       = "873948892650954";
            Settings.DisplayName = "Sensus";

            Forms.Init();
            FormsMaps.Init();
            MapExtendRenderer.Init();
            new SfChartRenderer();

            // toasts for iOS
            DependencyService.Register <ToastNotificatorImplementation>();
            ToastNotificatorImplementation.Init();

            LoadApplication(new App());

            uiApplication.RegisterUserNotificationSettings(UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, new NSSet()));

#if UNIT_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
Пример #20
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        /// <summary>
        /// Finisheds the launching.
        /// </summary>
        /// <param name="app">The application.</param>
        /// <param name="options">The options.</param>
        /// <returns></returns>
        public override Boolean FinishedLaunching(UIApplication app,
                                                  NSDictionary options)
        {
            AppDomain.CurrentDomain.UnhandledException += this.CurrentDomainOnUnhandledException;
            TaskScheduler.UnobservedTaskException      += this.TaskSchedulerOnUnobservedTaskException;

            String connectionString = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "TransactionProcessing.db");

            this.Device   = new iOSDevice();
            this.Database = new DatabaseContext(connectionString);

            Forms.Init();

            Calabash.Start();

            SfBorderRenderer.Init();
            SfButtonRenderer.Init();
            SfTabViewRenderer.Init();

            this.LoadApplication(new App(this.Device, this.Database));

            return(base.FinishedLaunching(app, options));
        }
Пример #21
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            // Code to start the Xamarin Test Cloud Agent
                        #if ENABLE_TEST_CLOUD
            Calabash.Start();
                        #endif

            Xamarin.Forms.Forms.Init();

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.RegisterType <MediaPicker> ().As <IMediaPicker> ();
            containerBuilder.RegisterType <TesseractApi> ().As <ITesseractApi> ();

            Resolver.SetResolver(new AutofacResolver(containerBuilder.Build()));

            LoadApplication(new App());

            return(base.FinishedLaunching(application, launchOptions));
        }
Пример #22
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            // insights should be initialized first to maximize coverage of exception reporting
            InsightsInitialization.Initialize(new iOSInsightsInitializer(UIDevice.CurrentDevice.IdentifierForVendor.AsString()), SensusServiceHelper.XAMARIN_INSIGHTS_APP_KEY);

            #region configure context
            SensusContext.Current = new iOSSensusContext
            {
                Platform = Sensus.Context.Platform.iOS,
                MainThreadSynchronizer = new MainConcurrent(),
                SymmetricEncryption    = new SymmetricEncryption(SensusServiceHelper.ENCRYPTION_KEY)
            };

            // iOS introduced a new notification center in 10.0 based on UNUserNotifications
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorizationAsync(UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Alert);
                UNUserNotificationCenter.Current.RemoveAllDeliveredNotifications();
                UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests();
                UNUserNotificationCenter.Current.Delegate = new UNUserNotificationDelegate();
                SensusContext.Current.CallbackScheduler   = new UNUserNotificationCallbackScheduler();
                SensusContext.Current.Notifier            = new UNUserNotificationNotifier();
            }
            // use the pre-10.0 approach based on UILocalNotifications
            else
            {
                UIApplication.SharedApplication.RegisterUserNotificationSettings(UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, new NSSet()));
                SensusContext.Current.CallbackScheduler = new UILocalNotificationCallbackScheduler();
                SensusContext.Current.Notifier          = new UILocalNotificationNotifier();
            }
            #endregion

            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // facebook settings
            Settings.AppID       = "873948892650954";
            Settings.DisplayName = "Sensus";

            Forms.Init();
            FormsMaps.Init();
            MapExtendRenderer.Init();
            new SfChartRenderer();
            ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            LoadApplication(new App());

#if UI_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            // background authorization will be done implicitly when the location manager is used in probes, but the authorization is
            // done asynchronously so it's likely that the probes will believe that GPS is not enabled/authorized even though the user
            // is about to grant access (if they choose). now, the health test should fix this up by checking for GPS and restarting
            // the probes, but the whole thing will seem strange to the user. instead, prompt the user for background authorization
            // immediately. this is only done one time after the app is installed and started.
            _locationManager.RequestAlwaysAuthorization();

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
Пример #23
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            DateTime finishLaunchStartTime = DateTime.Now;

            UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;

            SensusContext.Current = new iOSSensusContext
            {
                Platform = Sensus.Context.Platform.iOS,
                MainThreadSynchronizer        = new MainConcurrent(),
                SymmetricEncryption           = new SymmetricEncryption(SensusServiceHelper.ENCRYPTION_KEY),
                PowerConnectionChangeListener = new iOSPowerConnectionChangeListener()
            };

            SensusContext.Current.CallbackScheduler   = new iOSTimerCallbackScheduler(); // new UNUserNotificationCallbackScheduler();
            SensusContext.Current.Notifier            = new UNUserNotificationNotifier();
            UNUserNotificationCenter.Current.Delegate = new UNUserNotificationDelegate();

            // we've seen cases where previously terminated runs of the app leave behind
            // local notifications. clear these out now. any callbacks these notifications
            // would have triggered are about to be rescheduled when the app is actived.
            (SensusContext.Current.Notifier as iOSNotifier).RemoveAllNotifications();

            // initialize stuff prior to app load
            Forms.Init();
            FormsMaps.Init();

            // initialize the syncfusion charting system
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new SfChartRenderer();
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'

            ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            // load the app, which starts crash reporting and analytics telemetry.
            LoadApplication(new App());

            // we have observed that, if the  app is in the background and a push notification arrives,
            // then ios may attempt to launch the app and call this method but only provide a few (~5)
            // seconds for this method to return. exceeding this time results in a fored termination by
            // ios. as we're about to deserialize a large JSON object below when initializing the service
            // helper, we need to be careful about taking up too much time. start a background task to
            // obtain as much background time as possible and report timeouts. needs to be after app load
            // in case we need to report a timeout exception.
            nint finishLaunchingTaskId = uiApplication.BeginBackgroundTask(() =>
            {
                string message = "Ran out of time while finishing app launch.";
                SensusException.Report(message);
                Console.Error.WriteLine(message);
            });

            // initialize service helper. must come after context initialization. desirable to come
            // after app loading, in case we crash. crash reporting is initialized when the app
            // object is created. nothing in the app creating and loading loop will depend on having
            // an initialized service helper, so we should be fine.
            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // register for push notifications. must come after service helper initialization as we use
            // the serivce helper below to submit the remote notification token to the backends. if the
            // user subsequently denies authorization to display notifications, then all remote notifications
            // will simply be delivered to the app silently, per the following:
            //
            // https://developer.apple.com/documentation/uikit/uiapplication/1623078-registerforremotenotifications
            //
            UIApplication.SharedApplication.RegisterForRemoteNotifications();

#if UI_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            uiApplication.EndBackgroundTask(finishLaunchingTaskId);

            // must come after app load
            base.FinishedLaunching(uiApplication, launchOptions);

            // record how long we took to launch. ios is eager to kill apps that don't start fast enough, so log information
            // to help with debugging.
            DateTime finishLaunchEndTime = DateTime.Now;
            SensusServiceHelper.Get().Logger.Log("Took " + (finishLaunchEndTime - finishLaunchStartTime) + " to finish launching.", LoggingLevel.Normal, GetType());

            return(true);
        }