示例#1
0
            public void MarksTheUserAsNotNewWhenUsingTheAppForTheFirstTimeAfterSixtyDays()
            {
                var now = DateTimeOffset.Now;

                TimeService.CurrentDateTime.Returns(now);
                OnboardingStorage.GetLastOpened().Returns(now.AddDays(-60));
                var dependencyContainer = new TestDependencyContainer
                {
                    MockTimeService              = TimeService,
                    MockUserAccessManager        = UserAccessManager,
                    MockNavigationService        = NavigationService,
                    MockOnboardingStorage        = OnboardingStorage,
                    MockAccessRestrictionStorage = AccessRestrictionStorage,
                    MockSyncManager              = Substitute.For <ISyncManager>(),
                    MockInteractorFactory        = Substitute.For <IInteractorFactory>(),
                    MockBackgroundSyncService    = Substitute.For <IBackgroundSyncService>()
                };

                var app = new AppStart(dependencyContainer);

                app.UpdateOnboardingProgress();

                OnboardingStorage.Received().SetLastOpened(now);
                OnboardingStorage.Received().SetIsNewUser(false);
            }
示例#2
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
#if !USE_PRODUCTION_API
            System.Net.ServicePointManager.ServerCertificateValidationCallback
                += (sender, certificate, chain, sslPolicyErrors) => true;
#endif

            #if !DEBUG
            Firebase.Core.App.Configure();
            #endif

            UNUserNotificationCenter.Current.Delegate = this;
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
            Messaging.SharedInstance.Delegate = this;

            initializeAnalytics();

            Window = new UIWindow(UIScreen.MainScreen.Bounds);
            Window.MakeKeyAndVisible();

            setupNavigationBar();
            setupTabBar();

            IosDependencyContainer.EnsureInitialized(Window, this);
            var app = new AppStart(IosDependencyContainer.Instance);
            app.LoadLocalizationConfiguration();
            app.UpdateOnboardingProgress();
            app.SetFirstOpened();
            app.SetupBackgroundSync();

            var accessLevel = app.GetAccessLevel();
            loginWithCredentialsIfNecessary(accessLevel);
            navigateAccordingToAccessLevel(accessLevel, app);

            var accessibilityEnabled = UIAccessibility.IsVoiceOverRunning;
            IosDependencyContainer.Instance.AnalyticsService.AccessibilityEnabled.Track(accessibilityEnabled);

            var watchservice = new WatchService();
            watchservice.TryLogWatchConnectivity();

#if ENABLE_TEST_CLOUD
            Xamarin.Calabash.Start();
#endif

            return(true);
        }
示例#3
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            var dependencyContainer = AndroidDependencyContainer.Instance;

            registerTimezoneChangedBroadcastReceiver(dependencyContainer.TimeService);
            registerApplicationLifecycleObserver(dependencyContainer.BackgroundService);

            var app = new AppStart(dependencyContainer);

            app.UpdateOnboardingProgress();

            var accessLevel = app.GetAccessLevel();

            if (accessLevel != AccessLevel.LoggedIn)
            {
                navigateAccordingToAccessLevel(accessLevel);
                Finish();
                return;
            }

            clearAllViewModelsAndSetupRootViewModel(
                dependencyContainer.ViewModelCache,
                dependencyContainer.ViewModelLoader);

            var navigationUrl = Intent.Data?.ToString() ?? getTrackUrlFromProcessedText();

            if (string.IsNullOrEmpty(navigationUrl))
            {
                app.ForceFullSync();
                StartActivity(typeof(MainTabBarActivity));
                Finish();
                return;
            }

            handleDeepLink(new Uri(navigationUrl), dependencyContainer);
            return;
        }