首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"SwiftyStoreKit.completeTransactions()只能在应用程序启动时调用一次。“

"SwiftyStoreKit.completeTransactions()只能在应用程序启动时调用一次。“
EN

Stack Overflow用户
提问于 2021-01-11 16:58:32
回答 1查看 1K关注 0票数 1

我在SwiftUI和应用程序中使用SwiftUI,而不是App,并在控制台中得到这样的消息:"SwiftyStoreKit.completeTransactions()只能在应用程序启动时调用一次。“我相信这是因为我在下面的块中调用completeTransactions,我可以从Print语句中看到它比以前调用AppDelegate的didFinishLaunching更频繁。我之所以关注这条信息,是因为在试图购买时,我因为崩溃而被App拒绝。我还应该在哪里打电话给completeTransactions?

代码语言:javascript
复制
     .onChange(of: scenePhase) { newScenePhase in
                switch newScenePhase {
                case .active:
                    print("App is active")

  SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
            
            for purchase in purchases {
                switch purchase.transaction.transactionState {
                case .purchased, .restored:
                    let downloads = purchase.transaction.downloads
                    if !downloads.isEmpty {
                        SwiftyStoreKit.start(downloads)
                    } else if purchase.needsFinishTransaction {
                        // Deliver content from server, then:
                        SwiftyStoreKit.finishTransaction(purchase.transaction)
                    }
                    print("\(purchase.transaction.transactionState.debugDescription): \(purchase.productId)")
                case .failed, .purchasing, .deferred:
                    break // do nothing
                @unknown default:
                    break // do nothing
                }
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 17:07:47

尝试在app main init中这样做,比如

代码语言:javascript
复制
@main
struct MyApp: App {

    init() {
        SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
           // ... other code here
        }
    }

    var body: some Scene {
        WindowGroup {
           ContentView()
        }
    }
}

注意:,如果为时尚早,那么您可以定义应用程序委托适配器(如这里的https://stackoverflow.com/a/62538373/12299030),并调用SwiftyStoreKit on确实完成了启动回调。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65671263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档