1

Apple のサーバーでホストされているコンテンツを使用してアプリ内購入を実装しようとしています。SwiftyStoreKit フレームワークを使用しています。

通常、他のチュートリアルに従って、ダウンロード呼び出しを実装する必要があります。 func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

だから私はこのfuncで次のコードを実装しました:

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