Техническое примечание TN2259

Добавление Закупки В приложении к iOS и Приложениям OS X

Закупка в приложении позволяет Вам продавать дополнительные функции и функциональность из Ваших приложений для iOS и приложений OS X. Если Вы хотите предложить Закупку В приложении в своих приложениях, необходимо завершить несколько шагов, прежде чем можно будет сделать это. Этот документ обеспечивает поэтапные инструкции для установки и тестирования Закупки В приложении. Это также отвечает на общие вопросы о Закупке В приложении. Раздел «Contracts, Tax, and Banking Information» описывает все финансовые документы, которые должны быть завершены. «Сертификаты, Идентификаторы и Профили» и «разделы» Подключения iTunes указывают шаги, которые будут соответственно сделаны в Сертификатах, разделе Identifiers & Profiles Задействованного Центра и Подключения iTunes. Раздел «What is Next» показывает, как протестировать Закупку В приложении. Раздел «Update Your App for Ask to Buy» описывает, как поддерживать функцию Ask to Buy.

Этот документ не касается, как реализовать Закупку В приложении в Ваших приложениях. Считайте Руководство по программированию Закупки В приложении для получения дальнейшей информации о реализации Закупки В приложении в Ваших приложениях.

Договоры, налог и банковская информация
Сертификаты, идентификаторы и профили
Подключение iTunes
Что является следующим?
Обновите свое приложение для, просят покупать
Часто задаваемые вопросы
Ссылки
История версии документа

Договоры, налог и банковская информация

Необходимо завершить следующие шаги, прежде чем можно будет поддерживать Закупку В приложении в приложениях:

  1. Согласитесь на последнее Лицензионное соглашение Программы Разработчика.

    Ваш агент Команды должен согласиться на последнее Лицензионное соглашение Программы Разработчика iOS (iOS) или на последнее Лицензионное соглашение Программы Разработчика Mac (OS X) в Задействованном Центре, прежде чем Вам разрешат создать продукты Закупки В приложении.

  2. Завершите свой договор, налог и банковскую информацию.

    Вы должны иметь договор Платных приложений iOS (iOS) или договор Платных приложений Mac OS X (OS X) в действительности с Apple и обеспечили Ваш налог и банковскую информацию в Подключении iTunes, как замечено на рисунке 1.

  Раздел Contract рисунка 1 в Подключении iTunes

Сертификаты, идентификаторы и профили

Сертификаты, раздел Identifiers & Profiles Задействованного Центра используется для конфигурирования Приложения ID и Настраивающие Профили для Закупки В приложении. OS X и разработчики iOS должны завершить следующие шаги в том разделе:

  1. Зарегистрируйте явное Приложение ID для Вашего приложения.

    Явный IDs Приложения является Приложением IDs, часть Идентификатора Пакета которого является строкой без подстановочного знака (» * «) символ. Кроме того, они автоматически регистрируются для Центра Закупки и Игры В приложении как показано на рисунке 2. Используя явное Приложение ID гарантирует, что Ваши продукты Закупки В приложении только связаны с Вашим приложением. Например, использовать com.example.MyGreatApplication вместо com.example.*.

    Ваш Администратор Агента или Команды Команды должен перейти к разделу App IDs Задействованного Центра для создания Приложения IDs для приложений. Считайте Регистрирующееся Приложение IDs в Руководстве по Распределению приложений, чтобы узнать, как создать Приложение IDs.

Рисунок 2  явное приложение ID
  1. Сертификаты и настраивающие профили.

  Профиль настройки рисунка 3

Подключение iTunes

Для тестирования Закупки В приложении необходимо создать продукты, чтобы купить и протестировать учетные записи для совершения покупок. Подключение iTunes позволяет Вам создавать и управлять продуктами Закупки В приложении и учетными записями Проверочного пользователя. И разработчики iOS и разработчики OS X должны завершить следующие шаги в Подключении iTunes:

  1. Создайте учетные записи проверочного пользователя.

    Apple обеспечивает тестовую среду, названную песочницей, позволяющей Вам тестировать свои продукты Закупки В приложении, не подвергаясь никаким финансовым зарядам. Среда песочницы использует специальные учетные записи проверочного пользователя, а не Ваши регулярные учетные записи Подключения iTunes для тестирования Закупки В приложении. Посмотрите Проверочных пользователей в Руководстве разработчика Подключения iTunes для получения дополнительной информации о создании учетных записей проверочного пользователя.

  2. Создайте продукты Закупки В приложении.

    Создание продуктов Закупки В приложении доступно через функцию Manage In-App Purchases в Подключении iTunes.

    Ваш Администратор или Технические пользователи должны перейти к Управлению Вашими Приложениями в Подключении iTunes, выбрать приложение, для которого они хотят создать продукты Закупки В приложении, затем щелкнуть по кнопке Manage In-App Purchases на следующей странице для этого приложения. Посмотрите Создание продукты Закупки В приложении в Руководстве по конфигурированию Закупки В приложении для Подключения iTunes для получения дополнительной информации о создании продуктов Закупки В приложении.

    • Заполните форму Покупок В приложении.

      Форма Закупки В приложении содержит поле Product ID, указывающее уникальный идентификатор для каждого из Ваших продуктов Закупки В приложении. Посмотрите Технические Вопросы и ответы QA1329, 'Идентификаторы продукта Закупки В приложении' для получения дополнительной информации об идентификаторах продукта и как получить доступ к форме.

    • Оставьте состояние своего продукта как Ожидающий Снимка экрана как показано на рисунке 4.

    • Очистите свой продукт для продажи.

      Форма Покупок В приложении содержит флажок Cleared for Sale, определяющий, будет ли Ваш продукт Закупки В приложении доступен для закупки из Вашего приложения. Установите тот флажок, чтобы удостовериться, что Ваш продукт доступен для продажи.

  Состояние рисунка 4 идентификаторов продукта

Что является следующим?

Вы успешно установили Закупку В приложении для своего приложения, давайте реализуем и протестируем его:

  1. Запустите или создайте свой проект в XCode.

  2. Введите часть Идентификатора Пакета своего Приложения ID в поле Bundle Identifier Информационной панели Вашего Target в XCode.

  3. Введите номер версии (CFBundleVersion) и номер сборки (CFBuildNumber) в полях Version и Build Сводной Области Вашего Target в XCode, соответственно, как замечено на рисунке 5.

Рисунок 5  , Устанавливающий версию и сборку в области Summary
  1. Подпишите свое приложение.

    Перейдите к области Build Settings Вашего Target и выберите пару Профиля Сертификата/Настройки Разработки iOS (iOS) или Mac, подписав сертификат (OS X), связанный с Вашим Приложением ID в разделе идентификационных данных подписывания кода.

  2. Запишите код для своего приложения.

    • И разработчики iOS и разработчики OS X должны считать Руководство по программированию Проверки Руководства по программированию и Получения Закупки В приложении для получения дальнейшей информации о реализации Закупки В приложении в Ваших приложениях и проверки получения, соответственно.

    • Приложения OS X должны сразу выполнить проверку получения после запуска. Приложения должны вызвать exit с состоянием 173 если проверка перестала работать как показано в Перечислении 1.



        Проверка Получения перечисления 1

      -(void)applicationWillFinishLaunching:(NSNotification *)notification
      {
         // Locate the receipt
         NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
       
         // Test whether the receipt is present at the above path
         if(![[NSFileManager defaultManager] fileExistsAtPath:[receiptURL path]])
         {
              // Validation fails
              exit(173);
         }
       
         // Proceed with further receipt validation steps
      }
  3. Протестируйте свое приложение в среде песочницы.

    • разработчики iOS должны завершить следующие шаги:

      • Знак из Хранилища в приложении Настроек на Вашем устройстве тестирования.

      • Установите место назначения выполнения своего приложения к устройству на iOS в XCode.

      • Сборка и запущенный Ваше приложение от XCode.

    • Разработчики OS X должны завершить следующие шаги:

      • Создайте свое приложение в XCode.

      • Запустите свое приложение.

        Необходимо запустить приложение от Средства поиска, а не от XCode в первый раз для получения получения. Щелкните по своему приложению в Средстве поиска для запуска его. OS X выводит на экран, «Регистрируются для загрузки с App Store». диалоговое окно. Введите свою учетную запись проверочного пользователя и пароль в соответствии с требованиями. Песочница предоставляет Вам новое получение после успешной аутентификации.

    Набор хранилища соединяется со средой песочницы при запуске приложения от XCode от тестового устройства (iOS), или от Средства поиска (OS X). Это соединяется с продуктивной средой для приложений, загруженных от App Store. Вы не должны использовать свою учетную запись проверочного пользователя для подписания в продуктивную среду. Это приведет к Вашей учетной записи проверочного пользователя, становящейся недопустимым. Недопустимые тестовые учетные записи не могут использоваться для тестирования Закупки В приложении снова.

  1. Представьте свои продукты Закупки В приложении для анализа.

    Войдите в систему Подключения iTunes для представления продуктов Закупки В приложении для анализа Apple, после того, как Вы будете сделаны, полностью тестируя их в среде песочницы.

Обновите свое приложение для, просят покупать

iOS 8 представляет, Просят Покупать, который позволяет родителям утвердить любые покупки, инициируемые дочерними элементами, включая приложения или Покупки В приложении на App Store. То, когда дочерний элемент запросит совершить покупку, Попросить Покупать, укажет, что приложение ждет утверждения родителя для этой закупки путем отправки SKPaymentTransactionStateDeferred утвердите к paymentQueue:updatedTransactions: метод на Вашем наблюдателе очереди транзакции как показано в Перечислении 2. Необходимо обновить UI, чтобы отразить это задержанное состояние и ожидать paymentQueue:updatedTransactions: быть вызванным снова с новым состоянием транзакции отражением решения родителя или после времени транзакции. Избегите блокировать свой UI или геймплей при ожидании транзакции, которая будет обновлена.

Перечисление 2  , Отвечающее на состояния транзакции

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
      for(SKPaymentTransaction * transaction in transactions)
      {
          switch (transaction.transactionState)
          {
              // Call the appropriate custom method
              case SKPaymentTransactionStatePurchasing:
                   break;
 
              case SKPaymentTransactionStateDeferred:
                  // Do not block your UI. Allow the user to continue using your app.
                  [self transactionDeferred:transaction];
                  break;
 
              case SKPaymentTransactionStatePurchased:
                   [self completeTransaction:transaction];
                   break;
 
              case SKPaymentTransactionStateRestored:
                   [self restoreTransaction:transaction];
                   break;
 
              case SKPaymentTransactionStateFailed:
                   [self failedTransaction:transaction];
                   break;
 
              default: break;
          }
      }
}

Часто задаваемые вопросы

  1. Сколько идентификаторов продукта Закупки В приложении мы можем создать на приложение в Подключении iTunes?

    Считайте Конфигурирование продукта в Руководстве по конфигурированию Закупки В приложении для Подключения iTunes для обнаружения, сколько идентификаторов продукта Закупки В приложении можно создать на приложение.

  2. Мое приложение для iOS в настоящее время подписывается с Профилем Настройки, использующим подстановочное Приложение ID. Как я включаю моему Приложению ID для поддержки Закупки В приложении?

    Считайте Приложение Редактирования IDs в Руководстве по Распределению приложений, чтобы изучить, как можно включить Приложению ID для поддержки Закупки В приложении.

  3. Я не могу найти кнопку Manage In-App Purchases в Подключении iTunes?

    Кнопка Manage In-App Purchases может не быть доступна Вам для один или больше следующих причин:

    • Вы не Администратор или Технический пользователь для Вашей учетной записи Подключения iTunes.

    • Ваш Агент Команды не согласился на последний iOS или Лицензионное соглашение Программы Разработчика Mac.

    • У Вас нет последнего договора Платных приложений в действительности.

  4. Я должен загрузить двоичный файл для тестирования Закупки В приложении?

    Нет. Тестирование Закупки В приложении не требует загрузки двоичного файла.

  5. Как я разрешаю, что 'Ваша информация учетной записи изменила' ошибку?

    Вы добираетесь, 'Ваша информация учетной записи изменила' ошибку, потому что Вы регистрируетесь с Вашей учетной записью проверочного пользователя на Вашем устройстве при тестировании Закупки В приложении. Для разрешения этой ошибки, знака из Хранилища в приложении Настроек на устройстве, создают новую учетную запись проверочного пользователя в Подключении iTunes и используют его при тестировании Закупки В приложении.

  6. Почему мои идентификаторы продукта, возвращаемые в invalidProductIdentifiers массив?

    Ваши идентификаторы продукта могут быть возвращены в invalidProductIdentifiers массив для один или больше следующих причин:

    • Вы не завершали все финансовые потребности (см. раздел «Contracts, Tax, and Banking Information» этого документа).

    • Вы не использовали явное Приложение ID.

    • Вы не использовали Профиль Настройки, связанный с Вашим явным Приложением ID.

    • Вы не использовали корректный идентификатор продукта в своем коде. Посмотрите Технические Вопросы и ответы, QA1329, 'Идентификаторы продукта Закупки В приложении' для получения дополнительной информации об идентификаторах продукта.

    • Вы не очищали свои продукты Закупки В приложении для продажи в Подключении iTunes.

    • Вы, возможно, изменили свои продукты, но эти изменения еще не доступны всем серверам App Store.

    • Если Вы или Анализ Приложения отклонили свой новый двоичный файл в Подключении iTunes.

  7. Как делают я решаю, «Вы уже купили эту Закупку В приложении, но она не была загружена». сообщение об ошибке?

    Вы добираетесь, «Вы уже купили эту Закупку В приложении, но она не была загружена». сообщение об ошибке, потому что Вы не вызывали SKPaymentQueue finishTransaction:метод в Вашем приложении. Вызов finishTransaction: позволяет Вам удалять транзакцию из очереди платежа.

  8. Как делают я решаю, «Вы уже купили это. Коснитесь OK для загрузки его снова бесплатно». сообщение об ошибке?

    «Вы уже купили это. Коснитесь OK для загрузки его снова бесплатно». сообщение является уведомлением, а не ошибкой. Это указывает, что Вы пытаетесь купить непотребляемый продукт, который Вы уже купили. Вы не заряжены при закупках уже купленного непотребляемого продукта.

  9. Вызов очереди платежа restoreCompletedTransactions метод не восстанавливает продуктов в моем приложении.

    Вызов очереди платежа restoreCompletedTransactions метод может не восстановить продукты в Вашем приложении для один или больше следующих причин:

    • У Вас не было ранее купленных непотребляемых, автовозобновляемых подписок или бесплатных подписок.

    • Вы пытались восстановить подписку невозобновления или потребляемые продукты, которые не восстановимы. restoreCompletedTransactions метод только восстанавливает непотребляемые, автовозобновляемые подписки и бесплатные подписки.

    • Число версии сборки Вашего приложения (CFBundleVersion) не следует инструкциям для чисел версии сборки. CFBundleVersion строка, сделанная из трех целых без знака, разделенных периодом. Посмотрите CFBundleVersion для получения дополнительной информации.

  10. Когда я должен восстановить свои продукты Закупки В приложении?

    Необходимо только восстановить подписку автовозобновления или непотребляемые продукты в обоих из этих случаев:

    • Устанавливать их на дополнительных устройствах, принадлежавших Вашим клиентам.

    • Переустановить их на устройствах, где было удалено их связанное приложение.

  11. Как делают я решаю, «Это не учетная запись проверочного пользователя. Создайте новую учетную запись в среде Песочницы». сообщение об ошибке?

    Вы добираетесь, «Это не учетная запись проверочного пользователя. Создайте новую учетную запись в среде Песочницы». сообщение об ошибке, потому что Вы регистрировались со своей учетной записью пользователя iTunes, когда запрошено Стором Китом для подтверждения закупки. Чтобы разрешить эту ошибку, подпишитесь из Стора в приложении Настроек на Вашем устройстве и использовать Вашу учетную запись проверочного пользователя Закупки В приложении, когда запрошено Стором Китом для подтверждения закупки.

  12. Как я получаю данные получения?

    Используйте NSBundle's appStoreReceiptURL метод для первого определения местоположения получения приложения затем считайте все получение для получения данных получения как показано в Перечислении 3 (iOS 7, OS X 10.7 и позже).



    Перечисление 3  , Получающее данные получения

     NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
      // Test whether the receipt is present at the above URL
       if(![[NSFileManager defaultManager] fileExistsAtPath:[receiptURL path]])
       {
          NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
       }


    Перечисление 4  , Получающее данные получения в iOS 6 и ранее

    -(void)completeTransaction:(SKPaymentTransaction *)transaction
    {
       NSData *receiptData = [transaction transactionReceipt];
    }
  13. Проверка моего получения перестала работать с состоянием <строка чисел> (iOS)

    Проверка Вашего получения может перестать работать с состоянием <строка чисел> для один или больше следующих причин:

    • Вы не кодировали свои данные получения с помощью base64 кодирующий в приложении для iOS.

    • Объект, отправляемый на App Store, не отформатирован как JSON. См. Перечисление 5 для надлежащего объекта JSON для автовозобновляемой подписки.



      Перечисление 5  допустимое демонстрационное получение для проверки автовозобновляемой подписки

      {
          "receipt-data" : "...",
              "password" : "..."
      }
  14. Я обновил свое приложение для iOS с Закупкой В приложении. Как я тестирую его (iOS)?

    Выполните эти шаги, при попытке протестировать, реализует ли Ваше обновленное приложение правильно Закупку В приложении:

    • Установите свое исходное приложение через Оперативный метод Распределения.

    • Установите свое обновленное приложение также через Оперативный метод Распределения, чтобы проверить, что это перезаписывает исходное приложение.

    • Попытайтесь использовать обновленное приложение и попытаться покупать продукты Закупки В приложении от него.

  15. Какой URL я должен использовать для проверки моего получения?

    • Используйте песочницу URL https://sandbox.itunes.apple.com/verifyReceipt при тестировании приложения в песочнице и в то время как приложение находится в анализе.

    • Используйте производство URL https://buy.itunes.apple.com/verifyReceipt как только Ваше приложение живо в App Store.

  16. Как я проверяю, что мои автовозобновляемые подписки подтверждают получение (iOS)?

    Всегда проверяйте свое получение для автовозобновляемых подписок сначала с производством URL; продолжите для проверки с песочницей URL при получении 21 007 кодов состояния. После этого подхода гарантирует, чтобы Вы не переключались между URLs, в то время как Ваше заявление тестируется или рассматривается в песочнице или живо в App Store.

  17. Как я разрешаю «Текущее получение недопустимое или несогласованное ds сообщение об ошибке» ID лица (OS X)?

    Вы получаете это сообщение, потому что Ваше приложение не содержит получение App Store OS X. Посмотрите «Код записи для своего приложения» шаг этого technote's, «Что является Следующим?» для большего количества infomation о том, как получить получение для Вашего приложения.

  18. Моя Закупка В приложении локализовала информацию для различных языков на Подключении iTunes. Однако localizedDescription и localizedTitle свойства всегда возвращают информацию на английском языке даже при том, что мой тестовый язык устройства не установлен в английский язык.

    localizedDescription и localizedTitle возвратите локализованную информацию, язык которой основывается на текущем iTunes Store, а не текущей установке языка устройства. Например, если Ваша Закупка В приложении локализуется для немецкого языка в Подключении iTunes, и Вы регистрируетесь с английской учетной записью проверочного пользователя, тогда localizedDescription и localizedTitle возвратит информацию, локализованную на английском языке. Иметь localizedDescription и localizedTitle возвратите информацию, локализованную на немецком, входе в систему с немецкой учетной записью проверочного пользователя на Вашем тестовом устройстве.

Ссылки



История версии документа


ДатаПримечания
12.09.2014

Добавленный раздел Update Your App for Ask to Buy. Обновленный FAQ 9.

06.08.2014

Редакционное обновление.

30.01.2014

Обновленный для iOS 7.

21.02.2013

Фиксированные опечатки и обновленный раздел FAQ.

29.08.2012

Обновленный раздел FAQ и фиксированные опечатки.

22.02.2012

Добавленные снимки экрана. Обновленный, «Что является Следующим?» и разделы FAQ.

03.08.2011

Добавленная информация о В Закупке Приложения в Mac OS X 10.7. Обновленный раздел FAQ.

23.05.2011

Обновленный раздел «What is Next?».

05.05.2011

Обновленный раздел FAQ.

20.10.2010

Удаленный Разрешение Вашего Приложения ID для раздела In App Purchase. Обновленный раздел FAQ.

03.03.2010

Новый документ, описывающий, как установить и протестировать Закупку В приложении в Вашем iOS и приложениях OS X.