0
私はアプリ内購入をテストしようとしています。購入するときにサインインボックスを何度も何度も何度も繰り返します。彼女は、私が購入を行う能力をチェックし、サンドボックステストのための継続的なサインインダイアログボックス
IAPHelper.sharedIntance.setupPurchases { (success) in
if success {
IAPHelper.sharedIntance.performProductRequestForIdentifiers()
}
}
そして、私はIAPHelper.sharedIntance.createPaymentRequestForProduct()
UIButton
で私の主な
ViewControoller
で観測を開始し、アプリケーション・委任で
import Foundation
import StoreKit
class IAPHelper: NSObject {
private final let productIdentifiers: Set<String> = ["non-consumable"]
static let sharedIntance = IAPHelper()
private var request: SKProductsRequest!
private var products: [SKProduct] = []
func performProductRequestForIdentifiers() {
request = SKProductsRequest(productIdentifiers: productIdentifiers)
request.delegate = self
request.start()
}
func setupPurchases(_ handler: @escaping (Bool) -> Void) {
if SKPaymentQueue.canMakePayments() {
handler(true)
SKPaymentQueue.default().add(self)
return
}
handler(false)
}
func createPaymentRequestForProduct() {
guard let product = products.first else { return }
print(product.localizedTitle)
let payment = SKMutablePayment(product: product)
payment.quantity = 1
SKPaymentQueue.default().add(payment)
}
}
extension IAPHelper: SKProductsRequestDelegate {
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
products = response.products
}
}
extension IAPHelper: SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchasing:
print("purchasing")
break
case .purchased:
print("purchased")
queue.finishTransaction(transaction)
break
case .failed:
print("failed")
queue.finishTransaction(transaction)
break
case .restored:
print("restored")
queue.finishTransaction(transaction)
break
case .deferred:
print("deferred")
break
}
}
}
}
私のヘルパーです
私は自分のサンドボックスのユーザーを接続し、アプリ内購入を接続しました。私はiPhoneで実際のアカウントからログアウトし、サンドボックスにサインインしました。どんな助けも素晴らしいだろう。