应用内购买与我的应用正常运行。我甚至使用自己的服务器来验证交易收据。
但是,我似乎遇到了SKPaymentQueue TransactionObserver 和/或 DefaultQueue 的问题。
每当我拨打以下电话时,都会出现iTunes提示旧测试帐户 -
SKPaymentQueue *currentQueue = [SKPaymentQueue defaultQueue];
我无法弄清楚当我需要购买或恢复交易时,如何阻止这个旧的测试帐户出现。
有人推荐了以下代码,它似乎可以完成所有旧的交易,但它无法解决我的问题。
SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
[currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[currentQueue finishTransaction:(SKPaymentTransaction *)obj];
}];
我还尝试删除该应用,从设备中删除旧的测试帐户以及iTunesConnect。旧的用户提示仍然出现!
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
他们是沙箱交易还是生产交易?
沙箱交易是一个很大的混乱,有时我在队列中发现旧的交易,沙箱交易的生命周期与生产交易的生命周期并不完全一致
答案 1 :(得分:0)
我刚刚在我的代码中解决了同样的问题。问题是因为我没有在应用程序退出时删除事务观察器。
将此添加到您的app delegate:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self.storeManager];
}
- (void)applicationWillTerminate:(UIApplication *)application
{
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self.storeManager];
}
我还需要重新启动设备以确保它们完全清晰。然后,当您执行恢复所有购买时,系统应该恢复正常。