예제 #1
0
        private void InitializeApp(NSDictionary options)
        {
            // Stamp the date this was installed (first run)
            var installedDate = this.StampInstallDate("CodeHub", DateTime.Now.ToString());

            if (installedDate < new DateTime(2015, 12, 5))
            {
                IsPro = true;
            }

            // Register default settings from the settings.bundle
            RegisterDefaultSettings();

            Locator.CurrentMutable.InitializeFactories();
            Locator.CurrentMutable.InitializeServices();
            Bootstrap.Init();

            _settingsChangedObserver = NSNotificationCenter.DefaultCenter.AddObserver((NSString)"NSUserDefaultsDidChangeNotification", DefaultsChanged);

            System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

            OctokitClientFactory.CreateMessageHandler = () => new HttpMessageHandler();
            GitHubSharp.Client.ClientConstructor      = () => new HttpClient(new HttpMessageHandler());

            var viewModelViews      = Locator.Current.GetService <IViewModelViewService>();
            var defaultValueService = Locator.Current.GetService <IDefaultValueService>();

            viewModelViews.RegisterViewModels(typeof(SettingsViewController).Assembly);

            Theme.Setup();

            try
            {
                Data.LegacyMigration.Migrate(Locator.Current.GetService <IAccountsRepository>());
            }
            catch (Exception e)
            {
                this.Log().DebugException("Unable to migrate db!", e);
            }

            bool hasSeenWelcome;

            if (!defaultValueService.TryGet("HAS_SEEN_WELCOME_INTRO", out hasSeenWelcome) || !hasSeenWelcome)
            {
                defaultValueService.Set("HAS_SEEN_WELCOME_INTRO", true);
                var welcomeViewController = new WelcomePageViewController();
                welcomeViewController.WantsToDimiss += GoToStartupView;
                TransitionToViewController(welcomeViewController);
            }
            else
            {
                GoToStartupView();
            }

            SetupPushNotifications();
            HandleNotificationOptions(options);
        }
예제 #2
0
        /// <summary>
        /// Finished the launching.
        /// </summary>
        /// <param name="app">The app.</param>
        /// <param name="options">The options.</param>
        /// <returns>True or false.</returns>
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            var iRate = MTiRate.iRate.SharedInstance;

            iRate.AppStoreID = 707173885;

            this.window = new UIWindow(UIScreen.MainScreen.Bounds);
            var presenter = new TouchViewPresenter(this.window);
            var setup     = new Setup(this, presenter);

            setup.Initialize();

            Mvx.Resolve <CodeFramework.Core.Services.IErrorService>().Init("http://sentry.dillonbuchanan.com/api/5/store/", "17e8a650e8cc44678d1bf40c9d86529b ", "9498e93bcdd046d8bb85d4755ca9d330");

            // Setup theme
            Theme.Setup();

            if (options != null)
            {
                if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    var remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                        HandleNotification(remoteNotification, true);
                    }
                }
            }

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

            startup.Start();

            this.window.MakeKeyAndVisible();

            InAppPurchases.Instance.PurchaseError   += HandlePurchaseError;
            InAppPurchases.Instance.PurchaseSuccess += HandlePurchaseSuccess;

            var features = Mvx.Resolve <IFeaturesService>();

            // Automatic activations in debug mode!
            #if DEBUG
            Mvx.Resolve <CodeFramework.Core.Services.IDefaultValueService>().Set(FeatureIds.PushNotifications, true);
            #endif


            // Notifications don't work on teh simulator so don't bother
            if (MonoTouch.ObjCRuntime.Runtime.Arch != MonoTouch.ObjCRuntime.Arch.SIMULATOR && features.IsPushNotificationsActivated)
            {
                const UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge;
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
            }

            return(true);
        }
예제 #3
0
        /// <summary>
        /// Finished the launching.
        /// </summary>
        /// <param name="app">The app.</param>
        /// <param name="options">The options.</param>
        /// <returns>True or false.</returns>
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
//			var iRate = MTiRate.iRate.SharedInstance;
//			iRate.AppStoreID = 707173885;


            // Stamp the date this was installed (first run)
            this.StampInstallDate("CodeHub", DateTime.Now.ToString());

            // Load the IoC
            IoC.RegisterAssemblyServicesAsSingletons(typeof(Xamarin.Utilities.Core.Services.IDefaultValueService).Assembly);
            IoC.RegisterAssemblyServicesAsSingletons(typeof(Xamarin.Utilities.Services.DefaultValueService).Assembly);
            IoC.RegisterAssemblyServicesAsSingletons(typeof(Core.Services.IApplicationService).Assembly);
            IoC.RegisterAssemblyServicesAsSingletons(GetType().Assembly);

            var viewModelViewService = IoC.Resolve <IViewModelViewService>();

            viewModelViewService.RegisterViewModels(typeof(Xamarin.Utilities.Services.DefaultValueService).Assembly);
            viewModelViewService.RegisterViewModels(GetType().Assembly);

            IoC.Resolve <IErrorService>().Init("http://sentry.dillonbuchanan.com/api/5/store/", "17e8a650e8cc44678d1bf40c9d86529b ", "9498e93bcdd046d8bb85d4755ca9d330");
            CodeHub.Core.Bootstrap.Init();


            Theme.Setup();
            SetupPushNotifications();
            HandleNotificationOptions(options);

            var startupViewController = new StartupView {
                ViewModel = IoC.Resolve <StartupViewModel>()
            };

            startupViewController.ViewModel.View = startupViewController;

            var mainNavigationController = new UINavigationController(startupViewController)
            {
                NavigationBarHidden = true
            };

            MessageBus.Current.Listen <LogoutMessage>().Subscribe(_ =>
            {
                mainNavigationController.PopToRootViewController(false);
                mainNavigationController.DismissViewController(true, null);
            });

            Window = new UIWindow(UIScreen.MainScreen.Bounds)
            {
                RootViewController = mainNavigationController
            };
            Window.MakeKeyAndVisible();
            return(true);
        }
예제 #4
0
        /// <summary>
        /// Finished the launching.
        /// </summary>
        /// <param name="app">The app.</param>
        /// <param name="options">The options.</param>
        /// <returns>True or false.</returns>
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            Crashlytics.Instance.Initialize();
            Fabric.Instance.Initialize();

#if DEBUG
            Fabric.Instance.Debug = true;
#endif

            Window    = new UIWindow(UIScreen.MainScreen.Bounds);
            Presenter = new IosViewPresenter(this.Window);
            var setup = new Setup(this, Presenter);
            setup.Initialize();

            var culture = new System.Globalization.CultureInfo("en");
            System.Threading.Thread.CurrentThread.CurrentCulture           = culture;
            System.Threading.Thread.CurrentThread.CurrentUICulture         = culture;
            System.Globalization.CultureInfo.DefaultThreadCurrentCulture   = culture;
            System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = culture;

            // Setup theme
            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
            Theme.Setup();

            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IApplicationService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IAccountsService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IAlertDialogService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <INetworkActivityService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IMessageService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IInAppPurchaseService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IFeaturesService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <ILoginService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IMarkdownService>());
            Locator.CurrentMutable.RegisterConstant(Mvx.Resolve <IPushNotificationsService>());

            Locator.CurrentMutable.RegisterLazySingleton(
                () => new ImgurService(), typeof(IImgurService));

            var features        = Mvx.Resolve <IFeaturesService>();
            var purchaseService = Mvx.Resolve <IInAppPurchaseService>();

            purchaseService.ThrownExceptions.Subscribe(ex =>
            {
                var error = new Core.UserError("Error Purchasing", ex.Message);
                Core.Interactions.Errors.Handle(error).Subscribe();
            });

            Core.Interactions.Errors.RegisterHandler(interaction =>
            {
                var error = interaction.Input;
                AlertDialogService.ShowAlert(error.Title, error.Message);
                interaction.SetOutput(System.Reactive.Unit.Default);
            });

#if DEBUG
            features.ActivateProDirect();
#endif

            //options = new NSDictionary (UIApplication.LaunchOptionsRemoteNotificationKey,
            //new NSDictionary ("r", "octokit/octokit.net", "i", "739", "u", "thedillonb"));

            if (options != null)
            {
                if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    var remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                        HandleNotification(remoteNotification, true);
                    }
                }
            }

            // Set the client constructor
            GitHubSharp.Client.ClientConstructor = () => new HttpClient(new CustomHttpMessageHandler());

            if (!Core.Settings.HasSeenWelcome)
            {
                Core.Settings.HasSeenWelcome = true;
                var welcomeViewController = new ViewControllers.Walkthrough.WelcomePageViewController();
                welcomeViewController.WantsToDimiss += GoToStartupView;
                TransitionToViewController(welcomeViewController);
            }
            else
            {
                GoToStartupView();
            }

            Window.MakeKeyAndVisible();

            // Notifications don't work on teh simulator so don't bother
            if (Runtime.Arch != Arch.SIMULATOR && features.IsProEnabled)
            {
                RegisterUserForNotifications();
            }

            return(true);
        }
예제 #5
0
        /// <summary>
        /// Finished the launching.
        /// </summary>
        /// <param name="app">The app.</param>
        /// <param name="options">The options.</param>
        /// <returns>True or false.</returns>
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            Window    = new UIWindow(UIScreen.MainScreen.Bounds);
            Presenter = new IosViewPresenter(this.Window);
            var setup = new Setup(this, Presenter);

            setup.Initialize();

            // Initialize the error service!
            Mvx.Resolve <IErrorService>().Init();

            var culture = new System.Globalization.CultureInfo("en");

            System.Threading.Thread.CurrentThread.CurrentUICulture         = culture;
            System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = culture;

            // Setup theme
            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
            Theme.Setup();

            var features            = Mvx.Resolve <IFeaturesService>();
            var defaultValueService = Mvx.Resolve <IDefaultValueService>();
            var purchaseService     = Mvx.Resolve <IInAppPurchaseService>();

            purchaseService.ThrownExceptions.Subscribe(ex => {
                AlertDialogService.ShowAlert("Error Purchasing", ex.Message);
            });

            #if DEBUG
            features.ActivateProDirect();
            #endif

//            options = new NSDictionary (UIApplication.LaunchOptionsRemoteNotificationKey,
//                new NSDictionary ("r", "octokit/octokit.net", "i", "739", "u", "thedillonb"));
//
            if (options != null)
            {
                if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    var remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                        HandleNotification(remoteNotification, true);
                    }
                }
            }

            // Set the client constructor
            GitHubSharp.Client.ClientConstructor = () => new HttpClient(new HttpMessageHandler());

            bool hasSeenWelcome;
            if (!defaultValueService.TryGet("HAS_SEEN_WELCOME_INTRO", out hasSeenWelcome) || !hasSeenWelcome)
            {
                defaultValueService.Set("HAS_SEEN_WELCOME_INTRO", true);
                var welcomeViewController = new CodeHub.iOS.ViewControllers.Walkthrough.WelcomePageViewController();
                welcomeViewController.WantsToDimiss += GoToStartupView;
                TransitionToViewController(welcomeViewController);
            }
            else
            {
                GoToStartupView();
            }

            Window.MakeKeyAndVisible();

            // Notifications don't work on teh simulator so don't bother
            if (Runtime.Arch != Arch.SIMULATOR && features.IsProEnabled)
            {
                RegisterUserForNotifications();
            }

            return(true);
        }
예제 #6
0
        /// <summary>
        /// Finished the launching.
        /// </summary>
        /// <param name="app">The app.</param>
        /// <param name="options">The options.</param>
        /// <returns>True or false.</returns>
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            Window    = new UIWindow(UIScreen.MainScreen.Bounds);
            Presenter = new IosViewPresenter(this.Window);
            var setup = new Setup(this, Presenter);

            setup.Initialize();

            // Setup theme
            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
            Theme.Setup();

            var features            = Mvx.Resolve <IFeaturesService>();
            var defaultValueService = Mvx.Resolve <IDefaultValueService>();

            var installedDate = this.StampInstallDate("CodeHub");

            Console.WriteLine("CodeHub was installed on: " + installedDate);
            if (installedDate < new DateTime(2016, 3, 5, 1, 1, 1))
            {
                features.ActivateProDirect();
            }

            if (!features.IsProEnabled)
            {
                bool isActive;
                if (defaultValueService.TryGet(FeaturesService.EnterpriseSupport, out isActive) && isActive)
                {
                    features.ActivateProDirect();
                }
                else if (defaultValueService.TryGet(FeaturesService.PushNotifications, out isActive) && isActive)
                {
                    features.ActivateProDirect();
                }
            }
//
//            options = new NSDictionary (UIApplication.LaunchOptionsRemoteNotificationKey,
//                new NSDictionary ("r", "octokit/octokit.net", "i", "739", "u", "thedillonb"));
//
            if (options != null)
            {
                if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    var remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                        HandleNotification(remoteNotification, true);
                    }
                }
            }

            // Set the client constructor
            GitHubSharp.Client.ClientConstructor = () => new HttpClient(new HttpMessageHandler());

            bool hasSeenWelcome;

            if (!defaultValueService.TryGet("HAS_SEEN_WELCOME_INTRO", out hasSeenWelcome) || !hasSeenWelcome)
            {
                defaultValueService.Set("HAS_SEEN_WELCOME_INTRO", true);
                var welcomeViewController = new CodeHub.iOS.ViewControllers.Walkthrough.WelcomePageViewController();
                welcomeViewController.WantsToDimiss += GoToStartupView;
                TransitionToViewController(welcomeViewController);
            }
            else
            {
                GoToStartupView();
            }

            Window.MakeKeyAndVisible();

            // Notifications don't work on teh simulator so don't bother
            if (Runtime.Arch != Arch.SIMULATOR && features.IsPushNotificationsActivated)
            {
                RegisterUserForNotifications();
            }

            return(true);
        }