InAppPurchase:从AppDelegate下载托管内容

时间:2016-12-27 14:27:29

标签: swift swift3 in-app-purchase iap-hosted-content

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

通常,根据其他教程,我们需要在以下位置实现下载调用:  e.setDescription("<p:outputText value='" + obj.title + "' />");

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

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

它正在工作,现在我正在尝试在AppDelegate中检查以前的交易的法规是否已经购买&#34;但没有&#34;完成&#34;。这意味着用户购买了该产品,但下载存在问题。

这是我的代码。

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

检查工作正常,但下载存在问题:

  

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

问题是:当我不在 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)") } } } }

时,如何正确启动内容下载?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果有人偶然发现了这个问题,则需要从仓库中下载master分支,而不是依赖于cocoapods。

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

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