Итак, мы подошли к финальной части. Предыдущие публикации на тему In-App Purchase читайте здесь In-App Purchase: Полное руководство – #1 и здесь In-App Purchase: Полное руководство – #2. В них мы рассмотрели как создать App ID, как создать In-App Purchase Product, как успешно извлечь product description и как осуществить покупку.

В этой части мы разберем как скачать контент с серверов Apple с помощью SKDownload.

Итак, как скачать In-App Purchase контент с серверов Apple?

Но прежде я хочу сделать небольшое отступление и рассказать о том, как добавить контент к своему продукту и загрузить его на сервер Apple.

Для этого вам потребуется программа Application Loader, которую вы можете скачать в iTunes Connect. Но и тут Apple оставили нам сюрпризик. Чтобы найти, где ее скачать придется повозиться.

Заходите в iTunes Connect -> Выбираете My App – > Выбираете само приложение -> Переходите в раздел Prapare For Submission – > Находите раздел Build -> И дальше ссылка на Application Loader

application-loader

Скачиваем, устанавливаем, запускаем, вводим свой Developer ID и пароль, выбираем App, выбираем добавленный ранее In-App Purchase Product и в самом конце необходимо будет добавить PKG файл с вашим контентом и загрузить его на сервер Apple.

Это все выглядит примерно так:

appliation_loader1

applicationloader2

Выбираете New In-App Purchase -> Выбираете ваше приложение -> Выбираете In-App Purchase Product

Далее убедитесь, что все необходимые поля вы заполнили (еще в iTunes Connect) и переходите на Hosted Content.

application-loader4

Здесь вам нужно прикрепить заранее приготовленный PKG файл со своим контентом.

Как cделать PKG архив с контентом in-App Purchase Product?

Очень просто. Запускаете Xcode. Выбираете New->Project->Other->In-App Purchase

pkg1

Устанавливаете Product ID – точно такой же, как вы установили в iTunes Connect 

Далее перетаскиваете ваш контент – PDF файл например – просто в папку проекта, как показано на рисунке

pkg2

Жмете Product -> Archive

После выбираете Export -> Export as an Installer Package

pkg4

Все. Архив PKG готов. Именно его вы прикрепляете в Application Loader и жмете Далее.

Если вы все сделали правильно, у вас в iTunes Connect появится иконка загруженного продукта.

Переходим к написанию кода как загрузить In-App Purchase контент с серверов Apple

Хочу вас поздравить. Самое страшное позади.

За загрузку отвечает SKDownload. Немного модифицируем следующий метод

Он вызывается из paymentQueue:updatedTransactions: когда транзакция успешна. После мы проверяем, если нам есть что загружать 

то вызываем

И финальный аккорд – добавляем метод делегата, куда приходят обновления состояния загрузки. Для  SKDownloadStateActive вы можете вызывать метод, обновляющий прогресс на вашем UI.

Для SKDownloadStateFinished вам нужно написать метод, сохраняющий загруженный контент туда, куда вам надо для дальнейшего использования.

И здесь есть одно НО! О котором я говорил в самом начале.

Когда загрузка будет завершена, вы получите путь к тому, что было загружено.

In-App Purchase SKDownload

Если вы посмотрите на него в дебагере, то увидите расширение .ZIP на конце!

Внимание! Это не ZIP архив, а простая папка с таким странным именем! Не пытайтесь ее распаковавать ZIP архиваторами! Просто заходите в нее и там лежит ваш контент!

Вот и все! Вуаля!

Добавляете тестового пользователя SandBox и тестируете на здоровье!

Желаю удачи и успешных проектов всем!

good_year3