Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

270
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda