InAppPurchase: загрузка размещенного контента из AppDelegate

Я пытаюсь реализовать In App Purchase с размещенным контентом на серверах Apple. Я использую фреймворк SwiftyStoreKit.

Обычно, согласно другим учебным пособиям, нам нужно выполнить вызов загрузки в: func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

Итак, я реализовал следующий код в этой функции:

let downloads = transaction.downloads
SKPaymentQueue.defaultQueue().startDownloads(downloads)

Это работает, и теперь я пытаюсь в AppDelegate проверить, является ли статус предыдущей транзакции "купленным", но не "законченным". Это означает, что пользователь купил продукт, но возникла проблема с загрузкой.

Вот мой код.

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
completeIAPTransactions()
return true
}

func completeIAPTransactions() {
SwiftyStoreKit.completeTransactions(atomically: false) { products in
for product in products {
if product.transaction.transactionState == .purchased || product.transaction.transactionState == .restored {
if product.needsFinishTransaction {
// Deliver content from server, then:


  let downloads = transaction.downloads
    SKPaymentQueue.defaultQueue().startDownloads(downloads)

SwiftyStoreKit.finishTransaction(product.transaction)
}
print("purchased: \(product.productId)")
}
}
}
}

Проверка работает, но есть проблема с загрузкой:

Значение типа PaymentTransaction еще не загружено.

Вопрос в том, как правильно запустить загрузку контента, когда я не в paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])

Любая помощь будет оценена.

1 ответ

Если кто-то сталкивается с этой проблемой, вам нужно скачать ветку master из репозитория, а не полагаться на cocoapods.

pod 'SwiftyStoreKit', :git => "https://github.com/bizz84/SwiftyStoreKit.git"

Причина ошибки заключается в том, что по какой-то причине не все файлы копируются при запуске установки pod. Возможно, на вашем компьютере есть кешированная версия.

Другие вопросы по тегам