我的应用内购买一直有效,直到昨天,今天我正在提交我的应用以供审核。我所做的唯一更改是在 iTunes 的应用程序页面中,我将我的应用程序(通过检查)与应用程序内购买相关联。
从那时起,每次我尝试在我的调试应用程序中使用我的测试帐户购买东西时,我都会收到此错误:
NSInvalidArgumentException', reason: 'Invalid product identifier: (null)'
我已经:
- 重新安装了我的应用
- 从我的商店注销并再次使用我的测试帐户
但今天似乎没有任何效果。完全相同的代码昨天运行完美,使用相同的测试帐户。
可能是因为我在itunes中做了这个改变?我担心当我的应用程序获得批准并上线时会发生什么。
任何帮助是极大的赞赏。
编辑:
问题是数组 _products 保持为零。
- (void)reload {
_products = nil;
NSLog(@"reload is called");
[[VimaIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
if (success) {
_products = products;
NSLog(@"Success from AppStore");
}
}];
for (SKProduct* product in _products) {
NSLog(@"In-app item:%@",product.localizedTitle);
}
}
永远不会调用成功日志消息。昨天我没有问题,使用相同的代码。
编辑:经过多次尝试,它有效。无需改变任何东西。服务器似乎需要很长时间才能响应。但是,我无法购买该产品,因为我获得了"cannot connect to itunes"
. 为什么会发生这种情况?
编辑2:
在其他尝试中,问题似乎出在以下代码中:
杂注标记 - SKProductsRequestDelegate
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Loaded list of products...");
_productsRequest = nil;
NSArray * skProducts = response.products;
for (SKProduct * skProduct in skProducts) {
NSLog(@"Found product: %@ %@ %0.2f",
skProduct.productIdentifier,
skProduct.localizedTitle,
skProduct.price.floatValue);
}
_completionHandler(YES, skProducts);
_completionHandler = nil;
}
在 for 循环之后。特别是,我得到了一个 BAD_ACCESS :_completionHandler(YES, skProducts);