StoreKit не отвечает - PullRequest
       21

StoreKit не отвечает

0 голосов
/ 05 ноября 2018

Я следовал учебному пособию по Kilo Loco для магазинного комплекта, но я не могу купить этот продукт, когда он называется. Это мой класс:

import Foundation
import StoreKit

enum GameProducts: String {
case removeAds = "BundleID" // I have registered one but Id rather keep it private
}

class GameIAP: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {

static let shared = GameIAP()
var products = [SKProduct]()
let myQueue = SKPaymentQueue.default()

override init() {
}

func getProduct() {
    let products: Set = [GameProducts.removeAds.rawValue]
    let request = SKProductsRequest(productIdentifiers: products)
    request.delegate = self
    request.start()
    myQueue.add(self)
}

func purchase(product: GameProducts) {
    guard let theProduct = products.filter({ $0.productIdentifier == product.rawValue}).first else
    { return }
    let payment = SKPayment(product: theProduct)
    myQueue.add(payment)
}

func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
    products = response.products
}

func restore() {
    myQueue.restoreCompletedTransactions()
}

func complete(transaction: SKPaymentTransaction) {
    SKPaymentQueue.default().finishTransaction(transaction)
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "payment"), object: nil)
}

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        print(transaction.transactionState.currentStatus(), transaction.payment.productIdentifier)
        switch transaction.transactionState {
        case .purchased: complete(transaction: transaction)
        default: break
        }
    }
}
}
extension SKPaymentTransactionState {
func currentStatus() -> String {
    switch self {
    case .deferred: return "Deferred"
    case .failed: return "Failed"
    case .purchased: return "Purchased"
    case .purchasing: return "Purchasing"
    case .restored: return "Restored"
    }
}
}

Когда ViewController загружается, он вызывает getProduct (), а затем, когда я нажимаю кнопку, он вызывает функцию покупки, но это, похоже, не работает ?? Функция восстановления работает абсолютно нормально, но покупка ничего не возвращает ... Кто-нибудь делал это раньше и знает, где я ошибся, или это что-то в App Store подключилось ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...