应用内购买response.products为空

tiw*_*tiw 3 iphone storekit in-app-purchase

我知道之前有人问过:iPhone In App Purchase - 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
Run Code Online (Sandbox Code Playgroud)

mal*_*ois 8

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

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