我想知道在 iOS 应用内购买流程中,处理中断交易的最佳方式是什么?
让我们看看以下中断的购买场景:
1.通过AppStore购买
SKPaymentQueue.defaultQueue().addPayment(payment)
2.收到响应
public func paymentQueue(queue: SKPaymentQueue, updatedTransactions)
我们将尝试在我们自己的服务器中坚持购买
尝试与我们的服务器通信以坚持购买
网络不稳定导致通讯失败
因此,我们不调用finishTransaction
用户关闭应用程序,然后重新启动
我们现在应该尝试恢复第 3 步,然后才能完成交易
但是,我真的不知道如何处理以下情况......
>>问题:
似乎如果存在未完成的事务,即使我没有注册观察者,每次启动我的应用程序时都会弹出一个登录对话框:
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
我做了以下实验:
购买 nonrenewable-subscription 不要故意完成交易
重新启动应用程序。登录对话框按预期弹出
修改代码以删除我的观察者
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
重新启动应用程序。登录对话框仍然弹出-> 不好
>>我想要的:
我想控制何时弹出登录对话框......以及何时调用 paymentQueue 以便我们的应用程序可以执行实际完成交易的操作(将购买数据保存到我们的服务器或下载用户购买的内容)
原因是我们希望用户理解登录对话框是为了让我们为他完成事务,我们将尝试将事务持久化在我们自己的服务器中。
因此我需要一种方法来触发登录对话框以及以下事务更新回调
public func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])
请帮忙!非常感谢您阅读本文