应用内购买沙箱问题

4

目前我正在开发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 Store 审核之前,请勿上传开发二进制文件到 iTunes Connect。如果 iTunes Connect 中存在该二进制文件,并且它不完全可用,App Review 将审核该二进制文件并可能拒绝开发二进制文件。如果您或 App Review 拒绝了最新的 iTunes Connect 中的二进制文件,则应用内购买测试将失败。在这种情况下的解决方法是上传一个没有应用内购买功能的二进制文件,该二进制文件可以获得 App Review 的批准。一旦二进制文件被批准,就可以恢复测试带有应用内购买功能的二进制文件。"
所以,我需要再次在 iTunes 创建新的应用程序,还是应该构建和提交我没有应用内购买的应用程序,在应用程序出现在 iTunes 后,再开发带有应用内购买功能的新版本?
感谢答复!
2个回答

2

invalidProductIdentifiers(未被苹果应用商店识别的产品标识符字符串数组。(只读))

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

在断开设备连接后运行Xcode,并运行“Build->Clean All Targets”。

运行Xcode->Empty Caches,然后退出并重新启动Xcode。

重新启动Xcode并重启设备后,将其重新连接到计算机。

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

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

如果您提交应用程序并且二进制文件由于任何原因被拒绝,则沙盒中的应用内购买可能无法正常工作。苹果公司表示,恢复此功能的唯一方法是首先重新提交一个没有IAP功能的应用程序二进制文件并获得批准(但不一定发布)。

请参阅我的另一个相关[回答]


我知道这一点,因此我已经创建了具有新标识符的新产品,但是根本没有任何变化。 - Tom Baranowicz
好的,你试过删除应用程序,重新安装吗?因为有时候你可能从应用商店安装了应用程序,但它无法正确地注册到StoreKit框架,这可能是出现“无效产品ID”的原因。 - Praveen-K
是的,我尝试过了。当然,我也尝试注册新用户(普通用户和测试用户)。我还尝试将应用内购买添加到我的现有应用程序中,结果完全相同,在iTunes Connect中的所有合同都已正确签署。有什么想法吗? - Tom Baranowicz

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接