示例#1
0
文件: AppDelegate.cs 项目: hdir/ga10
        private async void RequestReviewArgs()
        {
            // wait a bit before requesting
            await Task.Delay(2000);

            var requestReview = false;

            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
            {
                // In-App request
                SKStoreReviewController.RequestReview();
            }
            else
            {
                //NOTE: untested behaviour is emitted

                //requestReview = await UserDialogs.Instance.ConfirmAsync(
                //    message: "Fornøyd med appen? Vi vil gjerne ha din vurdering så vi kan bli bedre",
                //    okText: "Gi vurdering",
                //    cancelText: "Hopp over");

                //if (requestReview)
                //{
                //    if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
                //    {
                //        SKStoreReviewController.RequestReview();
                //    }
                //    CrossStoreReview.Current.OpenStoreReviewPage("1447263129");
                //}
            }

            Analytics.TrackEvent(TrackingEvents.RequestedReview,
                                 new TrackingEvents.RequestedReviewArgs(requestReview));
            Settings.HasRequestedReview = true;
        }
        internal static async Task PlatformTryOpenRatingPageAsync(Func <Task <bool> >?runBeforeOpenAsync = default)
        {
            var systemVersion = ParseVersion(UIDevice.CurrentDevice.SystemVersion);

            if (systemVersion >= new Version(10, 3))
            {
                SKStoreReviewController.RequestReview();
            }
            else if (runBeforeOpenAsync != null && !await runBeforeOpenAsync())
            {
                // Don't do anything if the runBeforeOpen function returned false
            }
            else if (systemVersion >= new Version(8, 0))
            {
                UIApplication.SharedApplication.OpenUrl(new NSUrl(AppStoreReviewUrlIOS8.Replace("YOUR_APP_ID", NSBundle.MainBundle.BundleIdentifier)));
            }
            else if (systemVersion >= new Version(7, 0))
            {
                UIApplication.SharedApplication.OpenUrl(new NSUrl($"{AppStoreReviewUrlIOS7}{NSBundle.MainBundle.BundleIdentifier}"));
            }
            else
            {
                UIApplication.SharedApplication.OpenUrl(new NSUrl($"{AppStoreReviewUrl}{NSBundle.MainBundle.BundleIdentifier}"));
            }
        }
示例#3
0
        /// <summary>
        /// Requests an app review.
        /// </summary>
        public Task RequestReview(bool testMode)
        {
#if __IOS__
            if (IsiOS103)
            {
                if (IsiOS14)
                {
                    var windowScene = UIApplication.SharedApplication?.ConnectedScenes?.ToArray <UIScene>()?.FirstOrDefault(x => x.ActivationState == UISceneActivationState.ForegroundActive) as UIWindowScene;
                    if (windowScene != null)
                    {
                        SKStoreReviewController.RequestReview(windowScene);
                        return(Task.CompletedTask);
                    }
                }
                SKStoreReviewController.RequestReview();
            }
#elif __MACOS__
            using var info = new NSProcessInfo();
            if (ParseVersion(info.OperatingSystemVersion.ToString()) >= new Version(10, 14))
            {
                SKStoreReviewController.RequestReview();
            }
#endif

            return(Task.CompletedTask);
        }
示例#4
0
 public void StoreReview()
 {
     if (DeviceInfo.Version >= new Version(10, 14))
     {
         SKStoreReviewController.RequestReview();
     }
 }
示例#5
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            Forms.Init();

            CarouselViewRenderer.Init();
            AnimationViewRenderer.Init();
            CachedImageRenderer.Init();

            // TODO dummy to prevent the dll being trashed by the linker.
            // Should be a better solution...
            var foo = new FFImageLoading.Svg.Forms.SvgCachedImage();

            UIApplication.SharedApplication.SetStatusBarHidden(false, false);
            LoadApplication(new BeenPwnedApp());

            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, false);

#if !DEBUG
            // Periodically let the app ask for a review
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
            {
                SKStoreReviewController.RequestReview();
            }
#endif
            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
示例#6
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Request a review from the user
            SKStoreReviewController.RequestReview();


            return(true);
        }
示例#7
0
        /// <summary>
        /// Requests an app review.
        /// </summary>
        public void RequestReview()
        {
#if __IOS__
            if (IsiOS103)
            {
                SKStoreReviewController.RequestReview();
            }
#endif
        }
示例#8
0
        public void PresentIfAppropriate()
        {
            try {
                if (ShouldPresent)
                {
                    defs.SetBool(true, shownKey);

                    SKStoreReviewController.RequestReview();
                }
            }
            catch (Exception ex) {
                Log.Error(ex);
            }
        }
        /// <summary>
        /// Requests an app review.
        /// </summary>
        public Task RequestReview(bool testMode)
        {
#if __IOS__
            if (IsiOS103)
            {
                SKStoreReviewController.RequestReview();
            }
#elif __MACOS__
            using var info = new NSProcessInfo();
            if (ParseVersion(info.OperatingSystemVersion.ToString()) >= new Version(10, 14))
            {
                SKStoreReviewController.RequestReview();
            }
#endif

            return(Task.CompletedTask);
        }
示例#10
0
        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();

            iRate.SharedInstance.DaysUntilPrompt = 3;
            iRate.SharedInstance.UsesUntilPrompt = 5;
            iRate.SharedInstance.PromptForNewVersionIfUserRated = true;

            iRate.SharedInstance.ShouldPromptForRating = (arg1, arg2) =>
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
                {
                    SKStoreReviewController.RequestReview();
                    return(false);
                }

                return(true);
            };

            Window.MakeKeyAndVisible();
            SetSettings();

            NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidChangeStatusBarOrientationNotification, n =>
            {
                UpdateDeviceMargins();
            });

            NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidChangeStatusBarFrameNotification, n =>
            {
                UpdateDeviceMargins();
            });

            UpdateDeviceMargins();
            _finishedLaunching = true;

            return(true);
        }
示例#11
0
        public void PresentIfAppropriate()
        {
            try {
                var osok          = UIDevice.CurrentDevice.CheckSystemVersion(10, 3);
                var shouldPresent = osok && !Shown && NumPositiveActions >= MinNumPositiveActions;

                Log.Info($"Present Review (os={osok}, s={Shown}, n={NumPositiveActions}) = {shouldPresent}");

                if (shouldPresent)
                {
                    defs.SetBool(true, shownKey);

                    SKStoreReviewController.RequestReview();
                }
            }
            catch (Exception ex) {
                Log.Error(ex);
            }
        }
示例#12
0
        /// <summary>
        /// Open iOS in-app review popup of your current application.
        /// </summary>
        public Task PerformInAppRateAsync()
        {
            var tcs = new TaskCompletionSource <bool>();

            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
            {
                SKStoreReviewController.RequestReview();

                tcs.SetResult(true);
            }
            else
            {
                DisplayErrorAlert("Your current iOS version doesn't support in-app rating.");

                tcs.SetResult(false);
            }

            return(tcs.Task);
        }
示例#13
0
    public void RateApp()
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
        {
            SKStoreReviewController.RequestReview();
        }
        else
        {
            string storeUrl = $@"itms-apps://itunes.apple.com/app/{AppDeviceInfo.PackageName}?action=write-review";

            try
            {
                using var uri = new NSUrl(storeUrl);
                UIApplication.SharedApplication.OpenUrl(uri);
            }
            catch (Exception ex)
            {
                // Here you could show an alert to the user telling that App Store was unable to launch

                Console.WriteLine(ex.Message);
            }
        }
    }
示例#14
0
 public Task RequestReviewAsync()
 {
     SKStoreReviewController.RequestReview();
     return(Task.CompletedTask);
 }
示例#15
0
 public void AskForRating()
 {
     SKStoreReviewController.RequestReview();
 }
示例#16
0
 /// <inheritdoc />
 public void RateApp()
 {
     SKStoreReviewController.RequestReview();
 }
示例#17
0
 public void LoadAppRatings()
 {
     SKStoreReviewController.RequestReview();
 }