在App Purchase沙盒问题中

时间:2011-08-16 12:30:41

标签: iphone ios xcode in-app-purchase itunesconnect

目前我正在开发需要In App Purchase的iOS应用程序。

与许多教程一样(例如:http://www.raywenderlich.com/2797/introduction-to-in-app-purchases)。我在iTunesConnect中创建了新的应用程序,上传了二进制文件并拒绝了它。之后,我在应用购买产品中添加了一些。在下一步中,我将Storekit添加到我的Xcode项目中,之后我在UIViewController中编写了这段代码:

- (void)buyPressed
{
    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObjects: @"com.mycompany.appliaction_name.levelpack",nil]];
    request.delegate = self;
    [request start];
    NSLog(@"request started");
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *products = response.products;
    for (int i=0; i<[products count]; i++) 
    {
        SKProduct *proUpgradeProduct = [products objectAtIndex:i];
        if (proUpgradeProduct)
        {
            NSLog(@"Valid product id: %@" , proUpgradeProduct.price);
            NSLog(@"Product title: %@" , proUpgradeProduct.localizedTitle);
            NSLog(@"Product description: %@" , proUpgradeProduct.localizedDescription);
            NSLog(@"Product price: %@" , proUpgradeProduct.price);
            NSLog(@"Product id: %@" , proUpgradeProduct.productIdentifier);
        }
    }

    for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Invalid product id: %@" , invalidProductId);
        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Apple connection error!" message:nil delegate:self cancelButtonTitle:@"CLOSE" otherButtonTitles:nil];
        [myAlertView show];
        [myAlertView release];
    }
}

我仍然收到所有应用内商品都有无效产品ID的信息。今天我发现了这个:http://developer.apple.com/library/ios/#technotes/tn2259/_index.html

还有一件重要的事情: “重要提示:在应用程序准备好进行App Review批准之前,请勿将开发二进制文件上传到iTunes Connect。如果二进制文件存在于iTunes Connect中并且功能不完整,App Review将检查二进制文件并可能拒绝开发二进制文件。如果您或App Review在iTunes Connect中拒绝您最近的二进制文件,则在应用程序购买中测试将失败。此情况下的解决方法是上传没有应用内购买功能的二进制文件,这些功能可以获得App Review批准。一旦二进制文件获得批准,恢复使用In App Purchase功能测试二进制文件。“

所以我必须再次在iTunes中创建新的应用程序,或者我应该在没有应用程序购买的情况下构建和提交我的应用程序,当应用程序出现在iTunes中时,在应用程序购买中开发新版本?

感谢您的回答!

2 个答案:

答案 0 :(得分:2)

  

invalidProductIdentifiers (Apple App Store无法识别的产品标识符字符串数组。(只读))

因此,请确保您没有使用被拒绝的相同产品标识符

  

断开设备后运行Xcode,然后运行Build-&gt; Clean All Targets。

     

运行Xcode-&gt;清空缓存,然后退出并重新启动Xcode。

     

重新启动Xcode并重启设备后,重新连接到您的设备。

     

在iTunesConnect门户网站上创建一个全新的iTunes测试帐户。

     

使用开发配置文件从XCode构建并运行您的应用程序,然后尝试使用新的iTunes测试帐户购买产品。

如果您提交申请并且二进制文件因任何原因被拒绝,应用内购买可能会停止在沙箱中正常运行。 Apple指出,恢复此功能的唯一方法是重新提交没有IAP功能的应用程序二进制文件,并首先获得批准(但不一定是已发布)。

查看我的另一个相关 [ANSWER]

答案 1 :(得分:1)

就在这时,另一件事对我有所帮助:在新版应用的版本信息中进行更改(任何更改)。但我也完成了上述缓存清理/设备重启。