1

AppStore にアプリがあり、復元購入が正常に機能します (ビルドは Swift 2.2 で行われます)。ただし、Swift 3 と xCode 8 に切り替えたところ、restoreCompletedTransactions が機能しなくなりました。paymentQueue は呼び出されず、paymentQueueRestoreCompletedTransactionsFinished は、iTuneStore の実際の appleId ユーザーのキューに 0 トランザクションを返します。ただし、サンドボックスのテスト アカウントに切り替えると、(Swift 3 でも) 機能しました。コードは次のとおりです... xCode 8でこれに関する変更があるかどうか誰か知っていますか?

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

        switch transaction.transactionState {
        case SKPaymentTransactionState.purchased:
            NSLog("Transaction completed successfully.")
            SKPaymentQueue.default().finishTransaction(transaction)
            transactionInProgress = false
            if (self.selectedProductIndex != -1)
            {
                delegate.didBuyTraining()
            }
            break


        case SKPaymentTransactionState.failed:
            NSLog("Transaction Failed");
            SKPaymentQueue.default().finishTransaction(transaction)
            transactionInProgress = false
            break

        case SKPaymentTransactionState.restored:
            NSLog("Transaction completed successfully.")
            SKPaymentQueue.default().finishTransaction(transaction)
            transactionInProgress = false
            break

        default:
            NSLog(String(transaction.transactionState.rawValue))
            break
        }
    }
}

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue!) {
    var productIds = [String]()
    let count = queue.transactions.count
        for var transaction in queue.transactions{
        let prodID = transaction.payment.productIdentifier 
        productIds.append(prodID)
    }
    for var prodID in productIds {
        for var prod in productsArray {
            if prod?.productIdentifier == prodID{
                set_defaults((prod?.localizedTitle)!)
            }
        }
    }
}
4

0 に答える 0