SKProductsRequest返回0个产品的原因是什么?
我试图设置IAP,但打电话来检索产品使用SKProductsRequest SKProductsResponse数组我的委托内有一个计数为0.这是我的清单:
- testing产品已添加到iTunes连接
- 产品的包ID与应用包ID相匹配(并且不使用通配符)
- SKProductRequest中设置的产品标识符与iTunes连接上创build的产品相匹配
- 自从在iTunes连接上创build产品后,我等了好几个小时
- configuration文件启用IAP
- 遵循各种教程中的所有步骤,例如http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/等
- 从设备删除应用程序,重新启动Xcode,重build等。
关于为什么提取的产品数量为零的任何其他build议?
我不相信这会是一个编码问题,但是无论如何,
… NSSet *productIdentifiers = [NSSet setWithObjects:@"redacted", nil]; self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; self.productsRequest.delegate = self; [self.productsRequest start]; … - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSArray *products = response.products; NSLog(@"Product count: %d", [products count]); for (SKProduct *product in products) { NSLog(@"Product: %@ %@ %f", product.productIdentifier, product.localizedTitle, product.price.floatValue); } }
我遇到了同样的问题,通过在产品名称前发送IAP产品名称而不是我的包ID来解决。 这是一个例子:
SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"my_product"]];
而不是
SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];
我遇到过同样的问题…
我只是改变我的捆绑标识符,这不符合iTunes捆绑标识符。
而我的应用程序运行良好:)
确保您在“function”部分打开了“应用程序内购买”。 如果你不这样做,SKProductsRequest将返回0个产品。
如果您忽视了这一点,产品标识符匹配区分大小写。
所以,如果你已经用Apple的标识符创build了一个产品
com.yourcompany.product1
并且您使用产品标识符来调用产品请求
com.yourcompany.Product1
您的清单将返回零产品。
这让我忙了一会儿:-)
ps:在一个单独的项目中,我发现SKProductsRequest只在重启后才开始返回产品。 所以,如果一切都失败了,请尝试重新启动您的Mac。
检查下面列表中的所有3件事情
1)检查您的产品标识符 – 它们必须与代码和iTunes Connect中的相同 – >我的应用程序 – >您的应用程序名称 – >function – >应用程序内购买 2)iTunes Connect – >协议,税收和银行 – >主协议 – >付费应用 – >联系信息/银行信息/税务信息(应填写) 3)代码来testing它
class ViewController: UIViewController { var requestProd = SKProductsRequest() var products = [SKProduct]() override func viewDidLoad() { super.viewDidLoad() validateProductIdentifiers() } } extension ViewController: SKProductsRequestDelegate { func validateProductIdentifiers() { let productsRequest = SKProductsRequest(productIdentifiers: Set(["candy100", "someOtherProductId"])) // Keep a strong reference to the request. self.requestProd = productsRequest; productsRequest.delegate = self productsRequest.start() } // SKProductsRequestDelegate protocol method public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) { self.products = response.products for invalidIdentifier in response.invalidProductIdentifiers { print(invalidIdentifier) } } }
有些时候,这些types的问题有很多解决scheme。 在做了一些调查之后,我发现它有时候有助于删除应用程序,然后再次安装( 应用程序内购买,SKProductsRequest返回0 – 产品仍然在审查中 )您还正在使用哪个版本的iOS?
初步答案
你有你的合同,银行等信息设置?
更正了答案
看来我错了。 看看应用程序内购买,SKProductsRequest返回0 – 产品仍在审查
不知道为什么,但我刚刚到iOS的Settings
> iTunes & App Stores
和Log out
请不要在iTunesConnect中设置产品的价格。我错过了,产品为零。我整天都在忙着解决这个问题。
另外,请记住,同意支付应用程序cotract是不够的。 您还必须填写联系人,银行和税务信息的具体协议,因为它被视为完成。