gpt4 book ai didi

iphone - 交易在完成交易后返回 : has been called on it

转载 作者:行者123 更新时间:2023-12-03 18:18:22 26 4
gpt4 key购买 nike

我正在对 iPhone 应用程序使用应用内购买。我有一个充当 SKProductsRequestDelegateSKPaymentTransactionObserver 的类,并且在 iTunes 上当前发布的版本中一切正常。

但是,最近添加了新的非消耗性产品并在沙盒环境中进行测试后,我现在遇到了一个奇怪的问题。每次启动应用程序时,我昨天进行的购买都会重新出现在由 paymentQueue:updatedTransactions: 传递给我的交易列表中,尽管我已调用 [[SKPaymentQueue defaultQueue] finishTransaction:交易] 已经(多次)。它是不死的!

在我的 paymentQueue:updatedTransactions: 实现中,我有:

for (SKPaymentTransaction* transaction in transactions) 
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
case SKPaymentTransactionStateRestored:
{
....
DDLog(@"Transaction for %@ occurred originally on %@.", transaction.payment.productIdentifier, transaction.originalTransaction.transactionDate);
....

然后我处理购买,下载用户内容,最后用另一种方法执行以下操作:

for (SKPaymentTransaction* transaction in [[SKPaymentQueue defaultQueue] transactions])         
if (([transaction.payment.productIdentifier isEqualToString:theParser.currentProductID]) &&
((transaction.transactionState==SKPaymentTransactionStatePurchased) || (transaction.transactionState==SKPaymentTransactionStateRestored))
)
{
DDLog(@"[[ Transaction will finish: product ID = %@; date = %@ ]]", transaction.payment.productIdentifier, transaction.transactionDate);
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

您可能已经注意到,为了简单起见,我没有保留原始交易对象,并且稍后通过调用 [[SKPaymentQueue defaultQueue] transactions] 相对容易找到它.无论如何,我确实看到了预期的输出;交易已完成,并且与原始交易的产品 ID 和日期精确匹配。然而,下次我运行该应用程序时,整个事情都会重新开始!这就好像 iTunes Store 从未收到交易已完成的通知,或者拒绝确认。

最佳答案

开发者论坛中也提出了这个问题,普遍的结论是,这是由于 iPhone OS 4.0 中交易处理的差异造成的。仅当接收已完成交易的通知与在支付队列上调用 finishTransaction 之间存在明显延迟时,才会出现此问题。最终我们没有找到理想的解决方案,但我们所做的是:

  1. 交易到达后立即对其进行处理,如果处理成功,则在用户首选项中记录一个值。

  2. 下次该事务出现在队列中时(可能要等到下次启动应用程序时),立即对其调用finishTransaction

我们的产品是“非消耗性”的,因此只需检查所支付的产品是否有效且无错误,即可安全地忽略来自 iTunes 的任何“不死”重复交易。对于消费品,人们需要保存有关购买的更多信息,例如原始付款日期,以确保 future 的交易通知可以与已处理的购买相匹配。

关于iphone - 交易在完成交易后返回 : has been called on it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com