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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }