使用促销代码进行应用内购买 - 以及如何处理

In-App Purchase with Promo Code - and how to handle it

我在 stackoverflow 上看到了一些关于促销代码处理的主题:其中 Detecting promo code, , Consumable promo codes 和 none 有正确答案。有一些 swift 指南介绍如何为应用内购买创建和兑换促销代码,但没有人谈论以后发生的事情。

在 AppStore 上兑换(应用内购买)促销代码:

有人说这就是您要做的一切(然后当用户选择付款时,突然没有 9,99$ 的信息,而是类似 'Use promo code' 的信息,StoreKit 在幕后处理)。恐怕这样不行。

我是否应该在 AppDelegate 中以某种方式处理它 - 如果在应用程序启动后立即发生交易(意味着有人使用了促销代码)?我应该向用户显示他使用了促销代码的警报,并解锁该功能或向他的帐户添加一些 'gems'(如果是消耗品)吗?

编辑:还有这两个苹果开发者论坛主题:Few people have the same problem - no answer, Apple staff responded about where to place transactionObserver

EDIT2:或者促销代码可能无法应用于一次性使用且无法恢复的消耗品(使用应用内促销代码是基于恢复我在某处读过?)

对于像我一样被卡住的人。

您确实需要声明一个 class(例如 PurchaseHelper)导入 StoreKitSKProductsRequestDelegate SKPaymentTransactionObserver AppDelegate 内的扩展。

然后,如果用户在 App Store 中兑换促销代码 - 然后他打开了你的应用程序 - 'updatedTransactions' 函数被调用,这是你唯一可以使用购买的产品。

我所做的是 - 将 info/transactionId 保存到 UserDefaults,因此在主屏幕中用户会收到类似 "You redeemed a promo code. Choose your favorite spot and click Purchase to get it for free".[=10= 的警告]

当然,更好的解决方案是立即在 AppDelegate 中启用该产品。如果您的促销代码为用户提供了 100 美元(可消费),那么您可以直接添加它(但仍然存在他是否已登录的问题)。

如果你知道更好的解决方案,请告诉我。