0

我想知道在 iOS 应用内购买流程中,处理中断交易的最佳方式是什么?

让我们看看以下中断的购买场景:

1.通过AppStore购买

SKPaymentQueue.defaultQueue().addPayment(payment)

2.收到响应

public func paymentQueue(queue: SKPaymentQueue, updatedTransactions)

我们将尝试在我们自己的服务器中坚持购买

  1. 尝试与我们的服务器通信以坚持购买

  2. 网络不稳定导致通讯失败

因此,我们不调用finishTransaction

  1. 用户关闭应用程序,然后重新启动

  2. 我们现在应该尝试恢复第 3 步,然后才能完成交易

但是,我真的不知道如何处理以下情况......

>>问题:

似乎如果存在未完成的事务,即使我没有注册观察者,每次启动我的应用程序时都会弹出一个登录对话框:

SKPaymentQueue.defaultQueue().addTransactionObserver(self)

我做了以下实验:

  1. 购买 nonrenewable-subscription 不要故意完成交易

  2. 重新启动应用程序。登录对话框按预期弹出

  3. 修改代码以删除我的观察者

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

  4. 重新启动应用程序。登录对话框仍然弹出-> 不好

>>我想要的:

我想控制何时弹出登录对话框......以及何时调用 paymentQueue 以便我们的应用程序可以执行实际完成交易的操作(将购买数据保存到我们的服务器或下载用户购买的内容)

原因是我们希望用户理解登录对话框是为了让我们为他完成事务,我们将尝试将事务持久化在我们自己的服务器中。

因此我需要一种方法来触发登录对话框以及以下事务更新回调

public func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])

请帮忙!非常感谢您阅读本文

4

0 回答 0