【问题标题】: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。我该怎么办?

标签: iphone in-app-purchase storekit


【解决方案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 是否意味着它的状态是“准备提交”或“准备出售”?
  • 不,为了测试,您的产品还没有提交,当您的测试良好时,添加屏幕截图并提交。就您而言,它在此之前,因此您没有“准备提交”或“准备出售”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 2015-04-13
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多