应用内购买响应。产品为空
Posted
技术标签:
【中文标题】应用内购买响应。产品为空【英文标题】:In-App Purchase response.products empty 【发布时间】:2011-07-11 17:57:25 【问题描述】:我知道之前有人问过: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
【问题讨论】:
为空或响应为“无效的产品 ID”? 如果我查看响应,请在调试器中查看。有 NSObject - isa 和 _internal - isa 但就是这样。我什至没有在调试器中看到 response.products,当我说 NSArray *myProducts = response.products; myProducts 有 0 个元素 yes :] 不能调试 storekit 吗? invalidProductIdentifiers 属性的值是多少? 是的,你是对的,我的数组中充满了我的产品 ID。我该怎么办? 【参考方案1】:您遇到了无效产品错误,因此请使用以下主题检查您的配置: Invalid Product IDs
您是否为您的 App ID 启用了应用内购买? 您是否已为您的产品检查过清仓销售? 您是否已提交(并可选择拒绝)您的应用程序二进制文件? 您项目的 .plist Bundle ID 是否与您的 App ID 匹配? 您是否为新的 App ID 生成并安装了新的配置文件? 您是否已将项目配置为使用此新的配置文件进行代码签名? 您是在为 iPhone OS 3.0 或更高版本构建吗? 您在发出 SKProductRequest 时是否使用了完整的产品 ID? 您是否在将产品添加到 iTunes Connect 后等待了几个小时? 您的银行详细信息在 iTunes Connect 上是否有效? 您是否尝试过从设备中删除该应用并重新安装? 您的设备是否越狱?如果是这样,您需要恢复越狱才能使 IAP 正常工作。
【讨论】:
我是否必须提交我的产品以供审核才能生效? 是的,我已经读过了。如果您在该页面上指的是这个问题:“您是否在将产品添加到 iTunes Connect 后等待了几个小时?”我的问题仍然有效。 “将您的产品添加到 iTunes Connect 是否意味着它的状态是“准备提交”或“准备出售”? 不,为了测试,您的产品还没有提交,当您的测试良好时,添加屏幕截图并提交。就您而言,它在此之前,因此您没有“准备提交”或“准备出售”。以上是关于应用内购买响应。产品为空的主要内容,如果未能解决你的问题,请参考以下文章