Я отправил двоичный файл для проверки через 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.
Я постараюсь повторить этот вечер