Покупка в приложении с промо-кодом - и как с этим справиться - PullRequest
0 голосов
/ 22 октября 2018

Я видел несколько тем в стеке переполнение по обработке промо-кодов: Обнаружение промо-кода , Обработка промо-кода , Расходуемые промо-коды и ни один из них не имеет правильного ответа.Есть несколько быстрых руководств о том, как создавать и использовать промо-коды для покупок в приложении, но никто не говорит о том, что происходит позже.

Погашение промо-кода (в приложении) в AppStore:

  • позволяет открыть приложение при успешном погашении
  • уведомляет транзакцию, объявленную предпочтительно в AppDelegate

Некоторые люди говорят, что это все, что вам нужно сделать (и тогда, когдапользователь выбирает оплату, в которой неожиданно появляется информация за 9,99 $, а что-то вроде «Использовать промо-код», который StoreKit обрабатывает за кулисами).Боюсь, это не сработает.

Должен ли я как-то обрабатывать это в AppDelegate - если транзакция происходит сразу после запуска приложения (имеется в виду, что кто-то использовал промо-код)?Должен ли я подать предупреждение, сообщающее пользователю, что он использовал промо-код, и разблокировать функциональность или добавить несколько «драгоценных камней» в свою учетную запись (если это расходные материалы)?

РЕДАКТИРОВАТЬ: Есть также эти две темы на форуме разработчиков Apple.: У немногих людей такая же проблема - нет ответа , Сотрудники Apple ответили о том, где разместить транзакцию. Observer

РЕДАКТИРОВАТЬ2: или, возможно, промо-коды нельзя применить к расходным материалам,которые используются один раз и не могут быть восстановлены (использование промо-кодов в приложении основано на восстановлении, которое я где-то читал?)

1 Ответ

0 голосов
/ 07 ноября 2018

Для тех, кто застрял как я.

Действительно, вам нужно объявить класс (например, PurchaseHelper) для импорта StoreKit с SKProductsRequestDelegate и SKPaymentTransactionObserver расширений внутри AppDelegate.

Затем, если пользователь выкупает промо-код в App Store и открывает ваше приложение, вызывается функция ' updatedTransactions ', и это единственный раз, когда вы можете сделать это.что-то с приобретенным продуктом.

То, что я сделал, - сохранил info /actionId в UserDefaults , поэтому на главном экране пользователь получает предупреждение типа «Вы выкупили промо-код. Выберите свойв избранном месте и нажмите «Купить», чтобы получить его бесплатно ».

Конечно, лучшим решением будет включить продукт прямо в AppDelegate.Если ваш промо-код дает пользователю 100 $ (расходные материалы), то вы можете просто добавить его (но все еще остается вопрос, если он вошел в систему).

Если вам известны более эффективные решения, скажите, пожалуйста.

...