代码之家  ›  专栏  ›  技术社区  ›  Alexnnd

要求用户在一定次数的启动后查看应用程序

  •  0
  • Alexnnd  · 技术社区  · 3 年前

    我想请用户在一定次数的发布后查看该应用程序。但出于我不理解的原因,“StoreKit评论弹出窗口”没有显示。这个 if let scene = 然而,代码是正确的,因为在按钮中它工作得很好。

    import SwiftUI
    import StoreKit
    
    @main
    struct ExampleApp: App {
        @AppStorage("launchNumber") var launchNumber: Int = 0
    
        var body: some Scene {
            WindowGroup {
                ContentView()
                    .onAppear { review() }
            }
        }
    
        func review() {
            launchNumber += 1
            // print(launchNumber)
            guard launchNumber == 2 else { return }
            if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
                SKStoreReviewController.requestReview(in: scene)
            }
        }
    }
    

    你知道为什么什么时候不显示吗 launchNumber == 2 ?

    1 回复  |  直到 3 年前
        1
  •  2
  •   lorem ipsum    3 年前

    使用 .task 相反 onAppear 以在其他方面存在问题而闻名 View s毫不拖延。

    var body: some Scene {
        WindowGroup {
            ContentView()
                .task { review() }
        }
    }
    

    如果你必须使用 on出现 你可以设置一个延迟。

    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear { 
                     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                        review() 
                     }
                 }
        }
    }