Iphone 应用程序内购买在生产应用程序中失败

Iphone 应用程序内购买在生产应用程序中失败,iphone,ios,objective-c,in-app-purchase,storekit,Iphone,Ios,Objective C,In App Purchase,Storekit,我开发了一款免费的游戏,但提供应用内购买。这在测试中运行得非常好,但由于游戏已经发布(首次发布),试图购买任何IAPs都会导致崩溃。我使用了作为此代码的基础 在模拟器上运行时,尝试获取产品列表时,会点击-didFailWithError处理程序,错误代码为2。我甚至不能用模拟器来测试IAP 在我的手机上运行实际生产应用程序(从应用商店)时,崩溃日志会说明以下内容: 0 CoreFoundation 0x2e9cfe8b 0x2e8fb000 + 872075 1 libobjc

我开发了一款免费的游戏,但提供应用内购买。这在测试中运行得非常好,但由于游戏已经发布(首次发布),试图购买任何IAPs都会导致崩溃。我使用了作为此代码的基础

在模拟器上运行时,尝试获取产品列表时,会点击-
didFailWithError
处理程序,错误代码为
2
。我甚至不能用模拟器来测试IAP

在我的手机上运行实际生产应用程序(从应用商店)时,崩溃日志会说明以下内容:

0   CoreFoundation      0x2e9cfe8b 0x2e8fb000 + 872075
1   libobjc.A.dylib     0x38ccd6c7 objc_exception_throw + 38
2   CoreFoundation      0x2e9cfdcd 0x2e8fb000 + 871885
3   StoreKit            0x310e69d9 0x310e4000 + 10713
4   60 Seconds          0x000b77df -[IAPHelper buyProduct:] (IAPHelper.m:53)
5   60 Seconds          0x000b7091 -[UpgradeViewController Buy5000Squares] (UpgradeViewController.m:199)
6   UIKit               0x3118a55f 0x3114a000 + 263519
因此,我知道它正确地收到了产品列表,并且在对ITC进行双重检查时,名称是正确的(事实上,我知道它们是正确的,因为我总是用商店发送给我的内容填充我的内部产品代码)

所以真正的问题是发生了什么?为什么它会崩溃,为什么我的模拟器甚至不让我尝试测试它

一些有用的代码

-(void)Buy5000Squares
{
    if (![SKPaymentQueue canMakePayments])
    {
        // show alert box
        return;
    }
    [[SecondsIAPHelper sharedInstance] buyProduct:squares5000Product];
}

- (void)buyProduct:(SKProduct *)product {

    NSLog(@"Buying %@...", product.productIdentifier);

    SKPayment * payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}
编辑


事实证明,根据这一点,XCode 5阻止了在模拟器中测试应用程序内购买(我在XCode 5的GM上开发了这一功能,这让我非常惊讶),但它至少为这一部分提供了一个解释。仍然不确定为什么它不能在我的设备上工作,尽管后来发现问题是因为我没有在iTunes connect中正确签署IAP合同/银行/税务信息。我以前只创建了付费应用,所以没有设置此信息

一旦我正确地签署了这些,它在12-24小时后开始工作