示例#1
0
        protected override async void ViewIsAppearing(object sender, EventArgs e)
        {
            base.ViewIsAppearing(sender, e);
            try
            {
#if DEBUG
                var lastTimeCheck = Xamarin.Essentials.Preferences.Get("LastVersionCheck", DateTime.MinValue);
                if (lastTimeCheck == DateTime.MinValue || DateTime.Now >= lastTimeCheck.AddMinutes(10))
                {
                    Xamarin.Essentials.Preferences.Set("LastVersionCheck", DateTime.Now);
                    MGDataAccessLibrary.DevicePlatform plaform =
                        Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS ?
                        MGDataAccessLibrary.DevicePlatform.iOS : MGDataAccessLibrary.DevicePlatform.Android;
                    var currentVer  = int.Parse(Xamarin.Essentials.VersionTracking.CurrentVersion.Replace(".", ""));
                    var needsUpdate = await MGDataAccessLibrary.BussinessLogic.AppVersionProcessor.AppNeedsUpdate(currentVer, plaform);

                    if (needsUpdate)
                    {
                        await CoreMethods.PushPageModel <UpdatePageModel>(data : null, modal : true);

                        var updatedPage = FreshPageModelResolver.ResolvePageModel <UpdatePageModel>();
                    }
                }
#else
                var lastTimeCheck = Xamarin.Essentials.Preferences.Get("LastVersionCheck", DateTime.MinValue);
                if (lastTimeCheck == DateTime.MinValue || DateTime.Now >= lastTimeCheck.AddMinutes(10))
                {
                    Xamarin.Essentials.Preferences.Set("LastVersionCheck", DateTime.Now);
                    MGDataAccessLibrary.DevicePlatform plaform =
                        Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS ?
                        MGDataAccessLibrary.DevicePlatform.iOS : MGDataAccessLibrary.DevicePlatform.Android;
                    var currentVer  = int.Parse(Xamarin.Essentials.VersionTracking.CurrentVersion.Replace(".", ""));
                    var needsUpdate = await MGDataAccessLibrary.BussinessLogic.AppVersionProcessor.AppNeedsUpdate(currentVer, plaform);

                    if (needsUpdate)
                    {
                        await CoreMethods.PushPageModel <UpdatePageModel>(data : null, modal : true);

                        var updatedPage = FreshPageModelResolver.ResolvePageModel <UpdatePageModel>();
                    }
                }
#endif
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
            }
        }
示例#2
0
        protected override async void ViewIsAppearing(object sender, EventArgs e)
        {
            base.ViewIsAppearing(sender, e);
            var userName = await SecureStorage.GetAsync("UserName") ?? "****";

            userName = userName.Substring(0, Math.Min(userName.Length - 1, 4)) + "****";
            LocalAuthType authType          = DependencyService.Get <ILocalAuthHelper>().GetLocalAuthType();
            var           isBioLoginEnabled = Preferences.Get("IsBiometricAuthEnabled", false);

            if (!isBioLoginEnabled)
            {
                switch (authType)
                {
                case LocalAuthType.None:
                case LocalAuthType.Passcode:
                    IsBiometricsLabelVisible = false;
                    break;

                case LocalAuthType.FaceId:
                    IsBiometricsLabelVisible = true;
                    AuthString = "Turn on Face ID login";
                    break;

                case LocalAuthType.NewAndroidBiometric:
                case LocalAuthType.TouchId:
                    IsBiometricsLabelVisible = true;
                    AuthString = Device.RuntimePlatform == Device.iOS ? "Turn on Touch ID login" : "Turn on fingerprint login";
                    break;
                }
            }
            else if (authType == LocalAuthType.FaceId || authType == LocalAuthType.TouchId ||
                     authType == LocalAuthType.NewAndroidBiometric)
            {
                if (authType == LocalAuthType.FaceId)
                {
                    BioLoginButtonText = "Log in with Face ID";
                    IsBioLoginVisible  = true;
                }
                else
                {
                    // we dont need to show this with the new iOS API
                    BioLoginButtonText = Device.RuntimePlatform ==
                                         Device.iOS ? "Log in with Touch ID"
                                : authType == LocalAuthType.NewAndroidBiometric ?
                                         "Log in with fingerprint" : $"Touch fingerprint sensor to log in as {userName}";
                    IsBioLoginVisible = true;
                }

                void onFailure()
                {
                    //do nothing
                    // we dont need to show this with the new Android API 28
                    if (Device.RuntimePlatform == Device.Android && authType != LocalAuthType.NewAndroidBiometric)
                    {
                        async void action()
                        {
                            await CoreMethods.DisplayAlert("ManageGo", "Fingerpring authentication failed", "DISMISS");
                        }

                        Device.BeginInvokeOnMainThread(action);
                    }
                }

                if (!UserLoggedOut)
                {
                    DependencyService.Get <ILocalAuthHelper>().Authenticate(userName, OnBiometricAuthSuccess, onFailure);
                }
            }

            try
            {
#if DEBUG
                var lastTimeCheck = Xamarin.Essentials.Preferences.Get("LastVersionCheck", DateTime.MinValue);
                if (true)
                {
                    Xamarin.Essentials.Preferences.Set("LastVersionCheck", DateTime.Now);
                    MGDataAccessLibrary.DevicePlatform plaform =
                        Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS ?
                        MGDataAccessLibrary.DevicePlatform.iOS : MGDataAccessLibrary.DevicePlatform.Android;
                    var currentVer  = int.Parse(Xamarin.Essentials.VersionTracking.CurrentVersion.Replace(".", ""));
                    var needsUpdate = await MGDataAccessLibrary.BussinessLogic.AppVersionProcessor.AppNeedsUpdate(currentVer, plaform);

                    if (needsUpdate && !ShowedUpdateAlert)
                    {
                        ShowedUpdateAlert = true;
                        await CoreMethods.PushPageModel <UpdatePageModel>(data : null, modal : true);

                        var updatedPage = FreshPageModelResolver.ResolvePageModel <UpdatePageModel>();
                    }
                }
#else
                var lastTimeCheck = Xamarin.Essentials.Preferences.Get("LastVersionCheck", DateTime.MinValue);
                if (lastTimeCheck == DateTime.MinValue || DateTime.Now >= lastTimeCheck.AddMinutes(10))
                {
                    Xamarin.Essentials.Preferences.Set("LastVersionCheck", DateTime.Now);
                    MGDataAccessLibrary.DevicePlatform plaform =
                        Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS ?
                        MGDataAccessLibrary.DevicePlatform.iOS : MGDataAccessLibrary.DevicePlatform.Android;
                    var currentVer  = int.Parse(Xamarin.Essentials.VersionTracking.CurrentVersion.Replace(".", ""));
                    var needsUpdate = await MGDataAccessLibrary.BussinessLogic.AppVersionProcessor.AppNeedsUpdate(currentVer, plaform);

                    if (needsUpdate && !ShowedUpdateAlert)
                    {
                        ShowedUpdateAlert = true;
                        await CoreMethods.PushPageModel <UpdatePageModel>(data : null, modal : true);

                        var updatedPage = FreshPageModelResolver.ResolvePageModel <UpdatePageModel>();
                    }
                }
#endif
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
            }
        }