2011-07-11 126 views
3

我知道它已經被問過:iPhone In App Purchase - response.products are still empty?應用程序內購買response.products空

但我也試圖在應用程序內購買來實現的,我的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

空或答案是「無效的產品ID」? – malinois

+0

在調試器中,如果我看看響應。有NSObject - isa和_internal - isa但就是這樣。我甚至沒有在調試器中看到response.products,當我說NSArray * myProducts = response.products; myProducts有0個元素 – tiw

+0

您的應用程序處於調試模式? – malinois

回答

6

你有一個無效的產品缺陷,所以用這個話題檢查您的配置: Invalid Product IDs

  • 是否啓用應用內購買你的App ID?
  • 您檢查了您的產品的清倉待售嗎?
  • 您是否提交了(並可選擇拒絕)您的應用程序二進制文件?
  • 您的項目的.plist軟件包ID是否與您的App ID匹配?
  • 您是否爲新App ID生成並安裝了新的供應配置文件?
  • 您是否使用此新配置文件將項目配置爲代碼簽名?
  • 你是爲iPhone OS 3.0或以上版本?
  • 在製作SKProductRequest時是否使用完整的產品ID?
  • 自從將產品添加到iTunes Connect後,您是否等了幾個小時?
  • 您的銀行信息是否在iTunes Connect上處於活動狀態?
  • 您是否嘗試過從設備中刪除應用程序並重新安裝?
  • 您的設備是否越獄?如果是這樣,你需要恢復越獄爲IAP工作。
+0

我是否必須提交我的產品以供他們審覈才能生效? – tiw

+0

您是否閱讀過鏈接? – malinois

+0

是的,我讀過它。如果您在該頁面上提及此問題:「您是否將產品添加到iTunes Connect後等了幾個小時?」我的問題仍然有效。「將您的產品添加到ITunes Connect意味着它的狀態是」準備提交「還是」準備好銷售「? – tiw