1

我正在尝试使用 Apple 服务器中的托管内容来实施 In App Purchase。我正在使用 SwiftyStoreKit 框架。

通常,根据其他教程,我们需要实现下载调用: func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

所以我在这个函数中实现了以下代码:

let downloads = transaction.downloads
SKPaymentQueue.defaultQueue().startDownloads(downloads)

它正在工作,现在我正在尝试在 AppDelegate 中检查先前交易的状态是否是“已购买”但未“完成”。这意味着用户已经购买了产品,但下载出现问题。

这是我的代码。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
    completeIAPTransactions()
    return true
}

func completeIAPTransactions() {
    SwiftyStoreKit.completeTransactions(atomically: false) { products in
        for product in products {
            if product.transaction.transactionState == .purchased || product.transaction.transactionState == .restored {
                if product.needsFinishTransaction {
                    // Deliver content from server, then:


                    let downloads = transaction.downloads
                    SKPaymentQueue.defaultQueue().startDownloads(downloads)

                    SwiftyStoreKit.finishTransaction(product.transaction)
                }
                print("purchased: \(product.productId)")
            }
        }
    }
}

检查正常,但下载有问题:

PaymentTransaction 类型的值没有会员下载。

问题是:当我不在时,我如何正确启动内容的下载?paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])

任何帮助将不胜感激。

4

1 回答 1

0

如果有人偶然发现这个问题,您需要从 repo 下载 master 分支,而不是依赖 cocoapods。

pod 'SwiftyStoreKit', :git => "https://github.com/bizz84/SwiftyStoreKit.git"

错误的原因是由于某种原因,在运行 pod install 时并非所有文件都被复制。可能是您的机器上某处有缓存版本。

于 2018-06-28T15:06:20.450 回答