SKPayementQueue:恢复交易完成而不在发布配置中调用“updatedTransactions”但不是调试配置
Posted
技术标签:
【中文标题】SKPayementQueue:恢复交易完成而不在发布配置中调用“updatedTransactions”但不是调试配置【英文标题】:SKPayementQueue: restoring transactions finishes without calling 'updatedTransactions' in release config but not debug config 【发布时间】:2009-11-13 01:58:35 【问题描述】:我正在调试恢复事务,在我的调试配置中一切正常:
我调用的IE:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
稍后队列调用:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
然后它会调用:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
每个人都很开心。
但是在我的发布配置中,我从未看到对 updatedTransactions 的调用,因此我从未真正恢复购买。
可能相关,在我尝试还原后它不起作用。我重新启动应用程序,发现向商店索取产品列表时没有得到响应。
【问题讨论】:
我相信这是 storekit 中的一个错误。 发布调试/发布配置中的差异会有所帮助。只是代码签名和优化不同,还是还有其他变化? StoreKit 真的很糟糕;我认为卡尔是对的。我希望你能解决问题,但如果这个问题持续一段时间,我不会感到惊讶。 我遇到了同样的问题。这是4年后的错误吗?或者有什么方法可以进行不同的测试或更改代码? 【参考方案1】:此错误情况与配置无关。这是商店套件中的间歇性错误。
【讨论】:
【参考方案2】:Carl,正如您所说,这似乎是一个间歇性错误。 但是,我还发现,如果我使用美国商店对其进行测试,它不会发生(或者至少我还没有看到)。我一直在使用英国测试用户,今天它每次都失败了。创建了一个美国测试用户,自动切换到美国商店后,再次完美运行。 这不是一个修复,但它可能有用;)
【讨论】:
【参考方案3】:你是这样把你的支付对象添加到支付队列中的吗?
SKPayment *payment = [SKPayment paymentWithProductIdentifier:"您的产品标识符"]; [[SKPaymentQueue defaultQueue] addPayment:payment];
如果你使用这种方式,那么在支付队列中添加支付对象后会立即调用UpdatedTransactions。你不必显式调用它。它由store kit处理。
【讨论】:
这与 OP 的恢复问题有什么关系?以上是关于SKPayementQueue:恢复交易完成而不在发布配置中调用“updatedTransactions”但不是调试配置的主要内容,如果未能解决你的问题,请参考以下文章
Swift presentViewController 完成块仅在调试中工作而不在发布中调用