Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda