Что означает «восстановление покупок» в покупках в приложении? - PullRequest
24 голосов
/ 12 октября 2011

Я не очень понимаю эту идею. Нужно ли предоставлять кнопку восстановления для пользователя? Какой метод должен вызывать этот метод? Что будет делать восстановление?

Ответы [ 3 ]

30 голосов
/ 12 октября 2011

Обычно вы восстанавливаете покупки с помощью этого кода:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Будет повторно вызван -paymentQueue:updatedTransactions на наблюдателя (ей) для купленных предметов. Это полезно для пользователей, которые переустанавливают приложение после удаления или устанавливают его на другое устройство.

Не все типы покупок в приложении могут быть восстановлены.

7 голосов
/ 27 июня 2012

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

для других типов продуктов оно автоматически восстановит ее.

Пожалуйста, прочитайте следующий текст, который прояснит вашу концепцию по этому поводу:

Как только транзакция была обработана и удалена из очереди, ваше приложение обычно никогда не видит ее снова.Однако, если ваше приложение поддерживает типы продуктов, которые должны быть восстановлены, вы должны включить интерфейс, который позволяет пользователям восстанавливать эти покупки.Этот интерфейс позволяет пользователю добавлять продукт на другие устройства или, если исходное устройство было стерто, восстановить транзакцию на исходном устройстве.

Store Kit предоставляет встроенную функциональность для восстановления транзакций для нерасходуемыхпродукты, автообновляемые подписки и бесплатные подписки.Чтобы восстановить транзакции, ваше приложение вызывает метод restoreCompletedTransactions очереди платежей.Очередь платежей отправляет запрос в App Store для восстановления транзакций.В свою очередь, App Store генерирует новую транзакцию восстановления для каждой ранее завершенной транзакции.Свойство originalTransaction объекта транзакции восстановления содержит копию исходной транзакции.Ваше приложение обрабатывает транзакцию восстановления, извлекая исходную транзакцию и используя ее для разблокировки приобретенного контента.После того, как Store Kit восстанавливает все предыдущие транзакции, он уведомляет наблюдателей очереди платежей, вызывая их paymentQueueRestoreCompletedTransactionsFinished: метод.

Если пользователь пытается приобрести восстанавливаемый продукт (вместо того, чтобы использовать реализованный интерфейс восстановления), приложениеполучает обычную транзакцию для этого элемента, а не транзакцию восстановления.Тем не менее, пользователь не платит снова за этот продукт.Ваше приложение должно относиться к этим транзакциям так же, как к исходной транзакции.Невозобновляющиеся подписки и расходные материалы не восстанавливаются автоматически с помощью Store Kit.Однако невозобновляемые подписки должны быть восстановлены.Чтобы восстановить эти продукты, вы должны записывать транзакции на своем собственном сервере, когда они приобретены, и предоставлять свой собственный механизм для восстановления этих транзакций на устройствах пользователя

2 голосов
/ 12 октября 2011

Является ли это дополнительным функционалом.

Если вы не укажете его, когда пользователь попытается приобрести непотребляемый продукт, AppStore восстановит старую транзакцию.Но ваше приложение будет думать, что это новая транзакция.

Если вы предоставите механизм восстановления, тогда менеджер по закупкам увидит восстановленную транзакцию.

Если приложение должно различать эти параметры, вы должны предоставить функциональность длявосстановление ранее приобретенных продуктов.

...