При обработке SKDownload
обновлений я не уверен, как реагировать на состояние .failed
.
Я видел руководство, опубликованное на форуме разработчиков Apple , но это подразумевает, что я должен дождаться выхода пользователя и перезапустить приложение, чтобы возобновить загрузку.
Позже, когда пользователь перезапускает приложение и метод addTransactionObserver вызывается во время запуска, наблюдатель транзакции обнаружит не завершенную транзакцию и уведомит приложение через метод делегата updatedTransactions.Приложение может снова повторить попытку загрузки размещенного содержимого.
Противоречие с тем, что в этом руководстве я получил указание сделать обратное и завершить транзакцию, чтобы позволить пользователюповторите попытку загрузки, восстановив покупку.
Существует несколько способов улучшить взаимодействие с пользователем, даже если загрузка не удалась ... ... Мы можем завершить транзакцию, и пользователь сможет использоватькнопка восстановления для загрузки файлов.
Если мы дадим пользователю параметры, транзакция не должна быть завершена, пока мы не уверены, что мы больше ее не используем (например, если вы планируете возобновить загрузку позже,не завершайте транзакцию).
Это означает, что я могу возобновить неудачную загрузку.Это возможно?
Мой paymentQueue: updatedDownloads
метод приведен ниже:
public func paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) {
downloads.forEach ({ (download) -> Void in
switch download.state {
case .active:
// Update the UI to allow user to pause/cancel download
case .cancelled:
// Update UI to show download cancelled
queue.finishTransaction(download.transaction)
case .failed:
let description = download.error?.localizedDescription
// <-------------------- retry the download? What should I do here?
case .finished:
// Update the UI to reflect download complete
queue.finishTransaction(download.transaction)
case .paused:
// Update the UI to allow user to resume download
case .waiting:
// Begin download immediately, on advice of: https://stackoverflow.com/a/23602553/3718806
queue.start([download])
}
})
}
Я ожидаю, что мои пользователи смогут повторить неудачную загрузку, не перезапуская приложение.
Как мне этого добиться?