我已经在促销代码处理上的堆栈溢出上看到了几个主题:Detecting promo codeHandling promo codeConsumable promo codes,但没有一个答案正确。对于如何为应用内购买创建和兑换促销代码,有一些快速指南,但是没有人谈论以后发生的事情。

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

  • 可让您在成功兑换
  • 时打开应用程序
  • 通知最好在AppDelegate中声明的transactionObserver

  • 有人说,这就是您所要做的(然后,当用户选择付款时,突然没有9,99 $的信息,而是诸如StoreKit在后台处理的“使用促销代码”之类的信息)。恐怕那样行不通。

    我是否应该在AppDelegate中以某种方式处理它-如果在应用启动后立即进行交易(这意味着有人使用了促销代码)?我是否应该提醒用户使用促销代码,解锁功能或向其帐户添加“ gem ”(如果是消耗品)?

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

    EDIT2:或者促销代码无法应用于一次性使用且无法还原的易耗品(使用应用内促销代码基于我在某处阅读的还原内容?)

    最佳答案

    对于那些像我一样被困住的人。

    确实,您需要声明一个类(例如PurchaseHelper),并在AppDelegate中使用 SKProductsRequestDelegate SKPaymentTransactionObserver 扩展名导入 StoreKit

    然后,如果用户在App Store中兑换了促销代码-他打开了您的应用程序-' UpdatedTransactions '函数被调用,这是您唯一可以对购买的产品执行操作的功能。

    我所做的是-将一个info / transactionId保存到UserDefaults 中,因此在主屏幕中,用户会收到类似“您已兑换促销代码。选择您喜欢的地点并单击“购买”以免费获得”的警报。

    当然,更好的解决方案是立即在AppDelegate中启用产品。如果您的促销代码为用户提供100 $(消耗品),那么您就可以添加它(但是仍然存在是否有人登录的问题)。

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

    10-08 05:46