J'essaie de tester mes achats intégrés et lorsque je l'achète, j'obtiens la boîte de connexion encore et encore. Son est mon aideBoîte de dialogue Ouverture de session continue pour les tests Sandbox
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
}
}
}
}
Dans l'App-délégué, je vérifie la capacité de faire des achats et commencer un observateur
IAPHelper.sharedIntance.setupPurchases { (success) in
if success {
IAPHelper.sharedIntance.performProductRequestForIdentifiers()
}
}
Et dans ma principale ViewControoller
dans un UIButton
j'appelle IAPHelper.sharedIntance.createPaymentRequestForProduct()
J'ai mon utilisateur sandbox fait en connect et l'achat in-app réalisé en connect aussi. Je suis déconnecté de mon compte réel sur mon iPhone et connecté avec le bac à sable. Toute aide est la bienvenue.