Swift IOS 13, IAP - «Невозможно подключиться к Itunes Connect» - PullRequest
3 голосов
/ 18 июня 2020

Я использую IOS 13,5, и у меня возникают проблемы при реализации IAP. Я использовал тот же самый точный код, когда я создал предыдущее приложение, и оплата работает нормально, когда я тестирую предыдущее приложение на том же физическом устройстве, что и сейчас.

Я проверил соединение inte rnet, которое является Хорошо, сертификаты выглядят хорошо, IAP в Itunes Connect «Готов к отправке», IAP включен для приложения, я сделал несколько тестеров песочницы с одинаковыми результатами. Я очищаю собранный и перезагруженный компьютер и устройство, но всегда говорит Code = 2 «не удается подключиться к Itunes Connect»

Я даже пытался загрузить сборку в Itunes connect, чтобы посмотреть, будет ли это иметь значение, но это не так. т. Мне явно чего-то не хватает и я буду благодарен за любую помощь по этому вопросу.

Звонок для инициирования покупки:

IAPService.shared.purchase(product: .fullAccess)

IAPService:

class IAPService: NSObject {

private override init() {}
static let shared = IAPService()

var products = [SKProduct]()
let paymentQueue = SKPaymentQueue.default()

func getProducts() {
    let products: Set = [IAPProduct.fullAccess.rawValue]
    let request = SKProductsRequest(productIdentifiers: products)
    request.delegate = self
    request.start()
    paymentQueue.add(self)
}

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

func restorePurchases(){
    print("restoring purchases")
    GlobalVariables.hasFullAccess = false
    GlobalVariables.partialAccessArrayKeys.removeAll()
    paymentQueue.restoreCompletedTransactions()
    CheckPurchase.shared.checkUserPurchase()
}}

extension IAPService: SKProductsRequestDelegate {
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        self.products = response.products
        for product in response.products {
            print(product.localizedTitle)
        }
    }
}

extension IAPService: SKPaymentTransactionObserver {
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            print(transaction.transactionState)
            print(transaction.transactionState.status(), transaction.payment.productIdentifier)
            print(transaction.debugDescription)
            if transaction.error != nil {
                print(transaction.error)
            }
            
        }
    }
}

extension SKPaymentTransactionState {
    func status() -> String {
        switch self {
        case .deferred: return "deferred"
        case .failed: return "failed"
        case .purchased: return "purchased"
        case .purchasing: return "purchasing"
        case .restored: return "restored"
        }
    }
}

Продукт IAP:

enum IAPProduct : String {
    case fullAccess = "se.marcusthuvesen.Torst.FullAccess"
}

Делегат приложения:

class AppDelegate: UIResponder, UIApplicationDelegate, SKPaymentTransactionObserver {

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    UIApplication.shared.isIdleTimerDisabled = true
    FirebaseApp.configure()
    IAPService.shared.getProducts()
    SKPaymentQueue.default().add(self)
    //Load game texts from FireBase
    return true
}}

1 Ответ

1 голос
/ 20 июня 2020

Во-первых, вам нужно добавить себя в качестве наблюдателя в paymentQueue в обратном вызове приложения Delegate didFinishLaunchingWithOptions.

Где вы видите сообщение об ошибке? Сначала вы должны увидеть обратные вызовы SKProductsRequestDelegate.

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