Двоичный отклоненный IAP работает на устройстве, но не при проверке - PullRequest
1 голос
/ 24 апреля 2019

Я отправил двоичный файл для проверки через AppStoreConnect после того, как проверил IAP на реальном устройстве и с помощью TestFlight другими тестировщиками

Они отвергли мой бинарный файл, сказав, что "при нажатии на IAP никаких действий не происходит"

Я дважды проверил готовность IAP к отправке и добавил в сборку внизу формы

Это код кнопки покупки:

@IBAction func showMeteoTouched(_ sender: Any) {
        let alert = UIAlertController(title: "DroneSpot Premium", message: NSLocalizedString("UnlockMeteoAlertTitle", comment: ""), preferredStyle: .actionSheet)

        alert.addAction(UIAlertAction(title: NSLocalizedString("PremiumPrice", comment: ""), style: .default, handler: { action in
            IAPHandler.shared.purchaseMyProduct(index: 0)
        }))
        alert.addAction(UIAlertAction(title: NSLocalizedString("RestoreProduct", comment: ""), style: .default, handler: { action in
            IAPHandler.shared.restorePurchase()
        }))
        alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil))

        self.present(alert, animated: true)
    }

И мой класс:

class IAPHandler: NSObject {
    static let shared = IAPHandler()

    let premiumID = "dronespot.premium"

    fileprivate var productID = ""
    fileprivate var productsRequest = SKProductsRequest()
    fileprivate var iapProducts = [SKProduct]()

    var purchaseStatusBlock: ((IAPHandlerAlertType) -> Void)?

    // MARK: - MAKE PURCHASE OF A PRODUCT
    func canMakePurchases() -> Bool {  return SKPaymentQueue.canMakePayments()  }

    func purchaseMyProduct(index: Int){
        if iapProducts.count == 0 { return }

        if self.canMakePurchases() {
            let product = iapProducts[index]
            let payment = SKPayment(product: product)
            SKPaymentQueue.default().add(self)
            SKPaymentQueue.default().add(payment)

            print("PRODUCT TO PURCHASE: \(product.productIdentifier)")
            productID = product.productIdentifier
        } else {
            purchaseStatusBlock?(.disabled)
        }
    }

    // MARK: - RESTORE PURCHASE
    func restorePurchase(){
        SKPaymentQueue.default().add(self)
        SKPaymentQueue.default().restoreCompletedTransactions()
    }

Я слышал по некоторым темам, что нам нужно подождать несколько часов, чтобы приложение активировалось, но команда Apple проверила мое приложение после того, как его проверили пользователи TestFlight. Я постараюсь повторить этот вечер

...