2011-04-03 49 views
0

我有一款免费的iPhone应用程序,用于购买应用程序。我用沙箱环境测试了我的第一个InAppPurchase,它工作正常。 InAppPurchase在App Store中获得批准并正常工作后,我在iTunes Connect中添加了几个新的InAppPurchases,并尝试在沙箱环境中对其进行测试。但是,我无法在我的应用程序中找到这些新的InAppPurchases。iPhone:通过认证后无法在沙箱中测试InAppPurchase

以下是我用来获取InAppPurchase产品代码:

 

//.... 

SKProductsRequest *prodRequest= [[SKProductsRequest alloc] initWithProductIdentifiers: 
       [NSSet setWithObject: prod]]; 
prodRequest.delegate = self; 
[prodRequest start]; 

//.... 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
    int count = [response.products count]; 

    NSLog(@"number of products:%d",count); 
    for (int i=0; i < count; i++) { 
     SKProduct* product = [response.products objectAtIndex:i]; 
     NSLog(@"product %d:id=%@ title=%@ desc=%@ price=%@", i, product.productIdentifier, product.localizedTitle, 
      product.localizedDescription, 
      product.price); 
    } 
} 

 

如果我用老InAppPurchase产品编号,我可以得到它,但如果我使用任何新创建的产品ID我计数== 0。

从我所看到的,我猜可能app可能没有在沙箱环境中运行后,我的第一个InAppPurchase被批准,但这只是一个猜测,因为我不知道如何检查我的应用程序是否在沙箱模式与否。

我在网上搜索了这个问题,并尝试了以下方法: 1.创建了我的应用程序的新版本,将其上传到iTunes连接并拒绝二进制文件。没有用 2.删除了我的所有配置文件并创建了新的配置文件。没有用 3.在开发人员调配门户中为我的应用程序创建了一个应用程序ID,并为该ID创建了供应配置文件并在Xcode中使用它。没有用

我的Xcode版本是3.2.5。我将它升级到4,但这并没有解决问题。

我想知道是否有其他人看到这个问题,并找到了解决办法。谢谢。

+0

我有同样的问题。幸运的是,我有几种设备可以使用,它可以在一些设备上使用,但不能在其他设备上使用。所以试试在另一台设备上。我也看到有人说,对他们的设备做一个完整的重置解决了这个问题。 – 2011-04-03 16:00:55

+0

谢谢扎基。我有两个设备。一个我以前用于测试我的第一个InAppPurchase,另一个是新的,但都不起作用。 – 2011-04-03 16:20:18

回答

2

OK我遇到了这个职位,并得到了一些提示:

Product Identifiers Are Valid On One Phone But Not Another

我只是删除了我的iPod Touch的应用程序,也没有重新启动,然后尝试再次运行在Xcode我的应用程序,它工作。我想有一些国家与应用程序一起保存,以确定是否为InAppPurchase使用沙箱环境。尽管我可以在不删除旧应用程序的情况下运行新编译的二进制文件,但无法摆脱导致应用程序未在沙箱环境中运行的旧状态。这是造成这个问题的原因。解决方案是在运行新编译的二进制文件之前从设备中删除旧的应用程序。