我正在尝试使用 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])
任何帮助将不胜感激。