应用内购买response.products为空

时间:2011-07-11 17:57:26

标签: iphone in-app-purchase storekit

我知道之前已经问过: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

1 个答案:

答案 0 :(得分:8)

您的产品错误无效,因此请使用以下主题检查配置: Invalid Product IDs

  
      
  • 您是否为应用ID启用了应用内购买?
  •   
  • 您是否已检查过您的产品已清关待售?
  •   
  • 您是否已提交(并可选择拒绝)您的应用程序二进制文件?
  •   
  • 您项目的.plist捆绑ID是否与您的应用ID相匹配?
  •   
  • 您是否为新的App ID生成并安装了新的配置文件?
  •   
  • 您是否已使用此新配置文件将项目配置为代码签名?
  •   
  • 您是否正在为iPhone OS 3.0或更高版本构建?
  •   
  • 您在制作SKProductRequest时是否使用完整的产品ID?
  •   
  • 自从将产品添加到iTunes Connect后,您有几个小时的时间?
  •   
  • 您的银行详细信息是否在iTunes Connect上有效?
  •   
  • 您是否尝试从设备中删除该应用并重新安装?
  •   
  • 你的设备越狱了吗?如果是这样,您需要恢复IAP的越狱才能正常工作。
  •   
相关问题