我有一个使用非续订订阅模式的应用程序。使用应用内购买测试帐户时效果很好。但是,在 Apple 的生产服务器上,有时用户会出于某种原因从我的应用程序转移到应用程序商店(有时是因为更新了计费信息,有时是为了回答安全问题)。这是在付款被添加到队列和 Apple 自己的付款流程中之后。一旦用户点击警报 View 选项进入应用商店,我的交易观察者将获得一个带有 SKPaymentTransactionStateFailed
的交易。状态。没关系。但是,在用户更新他们的账单信息或确认他们的安全问题后,系统会询问他们(仍在应用之外)是否仍想购买应用内购买。完成后,它们将被带回我的应用程序(它已自行关闭),并且事务观察者没有返回任何内容。仅当检索到产品列表时,队列才会更新为购买的产品。观察者注册通知之前
所以我的问题是:
如何处理在我的应用之外(在应用商店应用中)进行的购买?
如果在应用程序打开之前进行了购买(但未完成),队列会在什么时候更新? 我知道我应该让观察者一直走,但我想避免让用户购买该元素两次,而不知道他们已经购买了它。
最佳答案
通过一些试验和错误,我似乎已经解决了我的问题
事实证明,我没有为 SKPaymentQueue
初始化我的事务观察器。很快就好了。它需要初始化并添加为 application:didFinishLaunchingWithOptions:
中的事务观察器。方法,再也不迟了。至于交易何时到来,paymentQueue:updatedTransactions
下次您的应用程序处于事件状态时,您的交易观察者的方法将通过购买的交易被调用。重要的是要注意,当您被带到 App Store 时,您的应用可能会或可能不会出于某种原因关闭一次,如果它最终关闭,该方法将在下次应用打开时被调用。
关于ios - 在应用程序之外购买的 StoreKit 项目(从我的应用程序重定向到 App Store 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591392/