首页 > 解决方案 > 如果用户在进入隧道之前付款,StoreKit 会返回什么

问题描述

苹果文档说以下内容:

例如,如果用户在进入隧道之前在您的应用中购买了一些东西,那么如果没有网络连接,您的应用可能无法交付购买的内容。下次您的应用启动时,StoreKit 会再次调用您的交易队列观察者,您的应用应该处理交易并交付购买的内容。

paymentQueue(_:updatedTransactions:)我想知道当 StoreKit 未能在隧道中完成购买时,应用程序是否会收到任何东西?

我的第一个想法是 StoreKit 可能会返回SKPaymentTransactionState.failed与网络连接相关的错误域或代码。但如果是这样,应用程序会调用finishTransaction(_:)以删除支付队列中的交易。结果,上述文档最后一句中描述的内容永远不会发生。

那么,这是否意味着在上述情况下 StoreKit 不返回任何内容并且应用程序似乎挂起给用户?用户是否必须终止应用才能继续?或者,购买视图(由 StoreKit 提供)不会阻止应用程序的 UI,因此用户可以关闭购买视图并继续使用应用程序(我想应用程序没有实现活动指示器视图来阻止 UI)?

谢谢你的帮助。

标签: iosstorekit

解决方案


Apple 文档中描述的情况是,Apple 方面已完成购买,但您的应用无法交付内容

例如,用户可能已经购买了电影租赁。需要在您的服务器上记录对该租赁的访问。

如果他们在 Apple 返回状态后进入隧道,.purchased但在您从服务器确认购买已记录之前,您不会致电,completeTransaction因为交易尚未完成,直到购买记录在您的服务器上。您可能会遇到网络错误或与服务器通信超时。

待处理的事务将保留在队列中,供您的应用稍后重试。


推荐阅读