Ios 购买时出现应用内购买错误

Ios 购买时出现应用内购买错误,ios,objective-c,xcode,in-app-purchase,Ios,Objective C,Xcode,In App Purchase,我正在进行应用内购买(非消耗性),当我进行购买时,会弹出一个警报视图,显示“您已经购买了项目,但尚未下载”,交易失败。即使重新启动Xcode并关闭/打开设备,它仍保持不变。我有一个还原按钮,点击该按钮可以还原项目 点击restore后,它调用paymentQueueRestoreCompletedTransactionsFinished - (IBAction)Restore:(id)sender { [[SKPaymentQueue defaultQueue] addTransacti

我正在进行应用内购买(非消耗性),当我进行购买时,会弹出一个警报视图,显示“您已经购买了项目,但尚未下载”,交易失败。即使重新启动Xcode并关闭/打开设备,它仍保持不变。我有一个还原按钮,点击该按钮可以还原项目

点击restore后,它调用
paymentQueueRestoreCompletedTransactionsFinished

- (IBAction)Restore:(id)sender {
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];


}
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    [self UnlockPurchase];
}
但这绝不适用于以下方法:

 case SKPaymentTransactionStateRestored:
                NSLog(@"Restored ");
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
当我使用其他测试用户帐户进行测试时,调用上述函数
SKPaymentTransactionStateRestored
,我在还原时没有问题。
我已经在两台设备上进行了测试,我在运行iOS 7的iPhone 5上没有问题。但在运行iPhone 4(iOS 6)时,它会在我运行应用程序时弹出登录警报视图(从未输入
SKPaymentTransactionStateRestored
)的测试用户。我猜这是因为未完成的交易,但我使用的这个测试用户帐户从未进入
SKPaymentTransactionStateRestored
(其他帐户确实进入了该帐户)。如何摆脱自动发生的登录警报?只有当我在iPhone4上测试时,问题才会出现!这是因为未完成的事务或测试用户帐户问题还是其他原因?我不知道,请帮忙

您何时调用
removeTransactionObserver

在过去,我曾遇到过一个问题,我过早地删除了观察家,它造成了未完成采购的积压,一次只能完成一个


我通过将
removeTransactionObserver
调用移动到
dealloc

来修复它。不幸的是,在沙盒模式下测试时,存储工具包是出了名的不准确。苹果的工程师们甚至承认了这一点。不幸的是,在过去的几年里,当我的存储工具包代码处于一个可以正常工作的阶段,并且测试通常进行得很顺利时,我假设它很好,然后继续。不知何故,我一直过得很顺利。我可能从来都不在乎这个特定的用户帐户会给我带来问题,但当我使用我的应用程序时,会弹出一个登录警报。这是一件毁了我的事情@GuyKogusYes我在我的购买视图控制器中这样做了“-(void)dealloc{[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];}'