如果用户在进入隧道前直接付款,StoreKit会返回什么?

问题描述 投票:0回答:1

苹果 文档 说了以下内容。

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

我想知道应用程序是否通过 paymentQueue(_:updatedTransactions:) 当StoreKit在隧道中未能完成购买时?

我首先想到的是,StoreKit可能会返回 SKPaymentTransactionState.failed 与网络连接 错误域. 但如果是这样,该应用程序将调用 finishTransaction(_:) 来删除付款队列中的交易。因此,上述文件最后一句话所描述的内容将是: 从来没有 发生。

那么,这是否意味着在上述情况下,StoreKit不返回任何东西,应用程序似乎被挂在用户身上?用户是否要杀死应用才能继续?或者说购买视图(由StoreKit呈现)并没有阻挡应用的UI,所以用户可以取消购买视图并继续使用应用(我想应用没有实现一个活动指示器视图来阻挡UI)?

谢谢大家的帮助。

ios storekit
1个回答
1
投票

苹果文档中描述的情况是,在苹果这边已经完成了购买,但是你的app却在 无法送达.

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

如果他们在Apple返回一个 .purchased 状态,但在你能从你的服务器上得到购买已被记录的确认之前,你不会打电话给 completeTransaction 因为在购买记录在您的服务器上之前,交易并没有完成。 你大概会出现网络错误或与服务器通信超时。

未完成的交易将保留在队列中,供您的应用程序稍后重试。

© www.soinside.com 2019 - 2024. All rights reserved.