Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

259
Views
requestReview() obsoleto en iOS 14, ¿alternativa para xamarin.forms?

Estoy usando

 SKStoreReviewController.RequestReview ();

en un servicio de dependencia para Xamarin.Forms. Sin embargo, esto ahora está obsoleto desde iOS 14. Y quiero saber cómo integrarlo con el nuevo UIWindowScene

 requestReview(in windowScene: UIWindowScene)

en Xamarin.Forms

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Primero, puede intentar agregar SKStoreReviewController.RequestReview(Window.WindowScene) en el método FinishedLaunching de su xxx.ios->AppDelegate.cs; iniciar el proyecto para ver si es correcto.

Si el método anterior sale mal, usar DependencyService es la forma correcta de hacerlo.

Aquí está el código de la interfaz:

 public interface MyInterface { void RequestReview(); }

Aquí está el método de implementación de la interfaz en ios:

 [assembly: Dependency(typeof(MyInterfaceImpl))] namespace App19.iOS { public class MyInterfaceImpl : MyInterface { public void RequestReview() { var myv = UIDevice.CurrentDevice.CheckSystemVersion(14, 0); if (myv) { UIWindow window = UIApplication.SharedApplication.Delegate.GetWindow(); SKStoreReviewController.RequestReview(window.WindowScene); } else { SKStoreReviewController.RequestReview(); } } } }

Puede llamarlo en el método OnStart dentro de APP.xaml.cs:

 protected override void OnStart() { if (Device.RuntimePlatform == Device.iOS) { DependencyService.Get<IReviewService>().RequestReview(); } }
over 4 years ago · Santiago Trujillo Report

0

Podría tener una solución:

 using StoreKit; using UIKit; public void RequestReview(){ var scene = UIApplication.SharedApplication.KeyWindow.WindowScene; if (scene is null) { //handle the scene being null here return; } SKStoreReviewController.RequestReview(scene); }

Encontré varias formas de obtener la escena actual y ambas funcionaron cuando las probé:

 var scene = UIApplication.SharedApplication.KeyWindow.WindowScene; var alsoScene = UIApplication.SharedApplication.Delegate.GetWindow()?.WindowScene;

Puede leer más sobre la diferencia entre los dos en este número.

La solución completa donde verifica la versión de iOS para llamar a lo correcto podría verse así

 using StoreKit; using UIKit; public void RequestReview() { var isIos14OrAbove = UIDevice.CurrentDevice.CheckSystemVersion(14, 0); if (isIos14OrAbove) { var scene = UIApplication.SharedApplication.KeyWindow.WindowScene; if (scene is null) { //handle the scene being null here return; } SKStoreReviewController.RequestReview(scene); } else { SKStoreReviewController.RequestReview(); } }

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!