SKStoreReviewController.requestReview(在:场景中)iOS 14 无法在 Appstore 中运行

问题描述 投票:0回答:2

新的 iOS 14 StoreKit 不推荐使用 SKStoreReviewController.requestReview() 好的,我创建了请求 iOS 14 反馈的方法

func rateApp() {
        var ud = UserDefaults.standard.integer(forKey: "rew")
         NSLog("rew show count is %d", ud)

        if(ud >= 1)
        {
            
                if #available(iOS 14.0, *) {
                    if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene  {
                    SKStoreReviewController.requestReview(in: scene)
                    NSLog("rateappios14")
                    }
                } else {
                    // Fallback on earlier versions
                    SKStoreReviewController.requestReview()
                    NSLog("rateappotherios")
                }
            
            
        }
        ud = ud + 1
        UserDefaults.standard.setValue(ud, forKey: "rew")
        UserDefaults.standard.synchronize()
    }

我在从 Xcode 部署的设备上测试了它,在模拟器上一切正常。但后来我上传到 App Store 并下载它,然后审查请求完全不起作用。在 TestFlight 中也不起作用。

ios swift app-store storekit ios14
2个回答
0
投票
if #available(iOS 14.0, *) {
  if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
     SKStoreReviewController.requestReview(in: scene) 
   }
      } else {
         SKStoreReviewController.requestReview()
             }

0
投票

这可能是几个问题之一:

  • 未在主线程上调用
  • 在 UIWindowScene 连接之前被调用(didFinishLaunchingWithOptions 太早了)
  • 提供了错误的 UIWindowScene,或者改为 UIScene。假设第一个场景通常会起作用,但并不普遍正确
  • 用户已经看过太多次(每年限制3次)
  • 用户已禁止它出现在设置中的任何应用程序中。开发模式在这里仍然有效,但不适用于 App Store 构建。开发人员通常会陷入这个困境!
  • TestFlight:这是预期的,它从未在 TestFlight 中显示

如果需要它始终显示,您可以使用深层链接替代方案,即打开指向您的 App Store 页面的链接,并附加

?action=write-review

我编写了一份指南,涵盖了这些限制,包含可解决大多数限制的代码,并提供了与上面类似的替代方案:https://riticmoments.io/blog/skstorereviewcontroller_guide_with_examples

© www.soinside.com 2019 - 2024. All rights reserved.