-productRequest:didReceiveResponse在实体店中返回空产品数组,在沙箱中工作

Joh*_*erg 5 objective-c app-store in-app-purchase ios

我最近对已批准的应用程序进行了更新.此版本添加了In app购买.该应用程序在沙箱模式下运行良好,Apple确实批准了IAP和应用程序,但应用内购买失败.

我认为发生崩溃是因为response.products来自:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
}
Run Code Online (Sandbox Code Playgroud)

返回一个空数组,并且:

SKProduct *product = [[products filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"productIdentifier == %@", _model.packageId]] firstObject];

返回零.我无法得到SKProduct的价格.我认为实际的应用程序崩溃是由于这些行,因为产品和付款可能是零.

SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)

我读了其他博客文章,在IAP可用之前最多可能需要24小时.这是真的?我是否需要担心我的应用程序中的IAP在沙盒模式下运行时的错误以及Apple批准了它?

Joh*_*erg 4

事实证明,这确实是苹果的问题。我收到 Apple 的回复,称最多可能需要 36 小时才能提供应用内购买。

我想这使得处理此案非常重要

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
}
Run Code Online (Sandbox Code Playgroud)

被调用,但是当response.products 为空时。当您尝试获得实际产品时,请确保您不会得到零结果。

我希望苹果在 IAP 真正准备好销售之前不要批准并发布应用程序的更新。