我已经在促销代码处理上的堆栈溢出上看到了几个主题:Detecting promo code,Handling promo code,Consumable promo codes,但没有一个答案正确。对于如何为应用内购买创建和兑换促销代码,有一些快速指南,但是没有人谈论以后发生的事情。
在AppStore上兑换(应用内购买)促销代码:
有人说,这就是您所要做的(然后,当用户选择付款时,突然没有9,99 $的信息,而是诸如StoreKit在后台处理的“使用促销代码”之类的信息)。恐怕那样行不通。
我是否应该在AppDelegate中以某种方式处理它-如果在应用启动后立即进行交易(这意味着有人使用了促销代码)?我是否应该提醒用户使用促销代码,解锁功能或向其帐户添加“ gem ”(如果是消耗品)?
编辑:还有这两个苹果开发人员论坛主题:Few people have the same problem - no answer,Apple staff responded about where to place transactionObserver
EDIT2:或者促销代码无法应用于一次性使用且无法还原的易耗品(使用应用内促销代码基于我在某处阅读的还原内容?)
最佳答案
对于那些像我一样被困住的人。
确实,您需要声明一个类(例如PurchaseHelper),并在AppDelegate中使用 SKProductsRequestDelegate 和 SKPaymentTransactionObserver 扩展名导入 StoreKit 。
然后,如果用户在App Store中兑换了促销代码-他打开了您的应用程序-' UpdatedTransactions '函数被调用,这是您唯一可以对购买的产品执行操作的功能。
我所做的是-将一个info / transactionId保存到UserDefaults 中,因此在主屏幕中,用户会收到类似“您已兑换促销代码。选择您喜欢的地点并单击“购买”以免费获得”的警报。
当然,更好的解决方案是立即在AppDelegate中启用产品。如果您的促销代码为用户提供100 $(消耗品),那么您就可以添加它(但是仍然存在是否有人登录的问题)。
如果您知道更好的解决方案,请告诉我。