Как получить SKDownload уже купленного контента
Стандарт в процессе покупки приложения, когда размещается контент:
Это отлично. Представьте, что мы хотим восстановить все приобретенное содержимое, потому что мы удаляем и переустанавливаем наше приложение или просто потому, что мы установили его на другом устройстве. Теперь, и это подтверждается сеансом WWDC 2012 на эту тему, когда вы восстанавливаете все покупки, вы получаете полный список содержимого для восстановления, но, вероятно, вы не хотите загружать все из них. В таком случае вы должны предложить пользователю выбрать, какой контент загрузить, а затем поставить SKDownload выбранного продукта в очередь; После завершения загрузки и успешной установки содержимого вы можете объявить транзакцию завершенной. Вместо этого видео сеанса не говорит о том, что вы должны делать с отклоненными или отложенными загрузками. Насколько я знаю, нет способа сохранить где-нибудь SKDownload и извлечь его позже, и нет никакого API, чтобы спросить у iTunes что-то вроде этого "дайте мне SKDownload этого уже купленного продукта". Так что, по моему мнению, есть два варианта обхода этого случая:
Кто-то еще сталкивался с этой проблемой и нашел лучшее решение? имеет ли смысл открывать запрос на улучшение в Apple?
1 ответ
Я всегда делаю это так, как вы предлагаете, и просто "перекупляю" купленные товары, чтобы они проходили через нормальный поток покупок. Вы не можете пометить транзакцию как завершенную, пока не завершите загрузку. Поэтому, если вы приостановите его и приложение закроется, когда ваше приложение будет запущено снова, очередь отключится и попытается завершить покупку, что снова запустит вашу логику загрузки. Это кажется более раздражающим, поскольку у пользователя постоянно появляется всплывающее окно, когда я открываю приложение, чтобы завершить покупку.
SKDownload документы говорят;
Ваше приложение никогда не создает объект SKDownload напрямую. Вместо этого после обработки платежа ваше приложение считывает свойство загрузки объекта транзакции, чтобы получить массив объектов SKDownload, связанных с транзакцией.