我知道之前已经问过:iPhone In App Purchase - response.products are still empty?
但我也在尝试实施应用内购买,而我的response.products是空的。 我的情况:
我上传并拒绝了我的二进制文件。
然后我又将状态恢复到等待再次上传。(这有关系吗?)
我所有应用内购买产品的状态为“准备提交”。
我的生产用户已退出。测试用户尚未登录。
-(void) requestProductData{
SKProductsRequest *productRequest= [[SKProductsRequest alloc]
initWithProductIdentifiers:[NSSet setWithObjects:
@"com.mydomain.myapp.Pack1",
@"com.mydomain.myapp.Pack2",
@"com.mydomain.myapp.Pack3",nil]];
productRequest.delegate = self;
[productRequest start];
}
-(void)productsRequest:(SKProductsRequest *)request
didReceiveResponse:(SKProductsResponse *)response{
NSArray *myProducts = response.products;
NSLog(@"%d",[myProducts count]);//this prints 0
for(SKProduct * product in myProducts) {
[products addObject:product];
}
[request autorelease];
}
in my viewdidload:
if([SKPaymentQueue canMakePayments]) {
NSLog(@"IN-APP:can make payments");
}
else {
NSLog(@"IN-APP:can't make payments");
}
/*load transaction history to see if the user already bought some packs*/
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
products = [[NSMutableArray alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString * path = [documentsDirectory stringByAppendingPathComponent: @"history.plist"];
self.transactionHistory = [NSMutableArray arrayWithContentsOfFile: path];
if(!transactionHistory) {
NSMutableArray *_transactionHistory = [[NSMutableArray alloc] init];
self.transactionHistory = _transactionHistory;
[_transactionHistory release];
}
//some other initializations here
[self requestProductData];
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
//this returns 3 of my product id's
答案 0 :(得分:8)
您的产品错误无效,因此请使用以下主题检查配置: Invalid Product IDs
- 您是否为应用ID启用了应用内购买?
- 您是否已检查过您的产品已清关待售?
- 您是否已提交(并可选择拒绝)您的应用程序二进制文件?
- 您项目的.plist捆绑ID是否与您的应用ID相匹配?
- 您是否为新的App ID生成并安装了新的配置文件?
- 您是否已使用此新配置文件将项目配置为代码签名?
- 您是否正在为iPhone OS 3.0或更高版本构建?
- 您在制作SKProductRequest时是否使用完整的产品ID?
- 自从将产品添加到iTunes Connect后,您有几个小时的时间?
- 您的银行详细信息是否在iTunes Connect上有效?
- 您是否尝试从设备中删除该应用并重新安装?
- 你的设备越狱了吗?如果是这样,您需要恢复IAP的越狱才能正常工作。