2012-02-17 123 views
0

我試圖在免費應用程序中的應用程序購買中實現。SFProductsRequest總是返回零

我在iTunes連接入口中的應用程序購買管理器中創建了一個產品ID「test1」。

當我做以下列方式將產品的要求:

- (id)init { 

    NSSet *productIdentifiers = [NSSet setWithObjects: 
          @"test1", 
          nil]; 

    if ((self = [self initWithProductIdentifiers:productIdentifiers])) {     

} 

return self; 

}

- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers 
{  
if ((self = [super init])) 
{ 
    // Store product identifiers 
    _productIdentifiers = [productIdentifiers retain]; 

    // Check for previously purchased products 
    NSMutableSet * purchasedProducts = [NSMutableSet set]; 

    for (NSString * productIdentifier in _productIdentifiers) 
    { 
     BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier]; 

     if (productPurchased) 
     { 
      [purchasedProducts addObject:productIdentifier]; 
      NSLog(@"Previously purchased: %@", productIdentifier); 
     } 

     NSLog(@"Not purchased: %@", productIdentifier); 
    } 

    self.purchasedProducts = purchasedProducts; 
} 

return self; 

}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 

NSLog(@"Received products results..."); 
self.products = response.products; 
self.request = nil;  

[[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:_products]; 

NSLog(@"%d",[self.products count]); 
NSEnumerator *e = [self.products objectEnumerator]; 

id object; 

while(object=[e nextObject]) 
{ 
    NSLog(@"item"); 
    NSLog(@"%s",(char*)object); 
} 

}

- (void)requestProducts { 

self.request = [[[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers] autorelease]; 
_request.delegate = self; 
[_request start]; 

}

答案總是0.我不明白我做錯了什麼。這段代碼來自一個教程。有關應用程序購買的文檔通常很混亂,iTunes中的整個流程並不能給我帶來信心。

我認爲應用程序需要在網上銷售的應用程序購買工作。但是,我決定不包含在應用程序購買中,但讓應用程序在iTunes購買連接審查。在審覈過程中,該應用程序被拒絕,因爲它應該與應用內購買進行測試。

但是,如果產品列表始終爲零,我該如何測試應用程序購買?

如果有更多經驗的人可以給我一個這方面的建議,因爲我已經瘋了!

感謝,

隨着我的問候,

努諾

回答

3

我發現這個問題的最一致的解決方案是這個清單。

  • 是否啓用應用內購買你的應用程序ID:應該以避免任何人通過這實在是費時又情急同樣的問題可以通過全鋪展?
  • 您檢查了您的產品的清倉待售嗎?
  • 您是否提交了(並可選擇拒絕)您的應用程序二進制文件?
  • 您的項目的.plist軟件包ID是否與您的App ID匹配?
  • 您是否爲新App ID生成並安裝了新的供應配置文件?
  • 您是否使用此新配置文件將項目配置爲代碼簽名?
  • 你是爲iPhone OS 3.0或以上版本?
  • 在製作SKProductRequest時是否使用完整的產品ID?
  • 自從將產品添加到iTunes Connect後,您是否等了幾個小時?
  • 您的銀行信息是否在iTunes Connect上處於活動狀態? (via Mark)
  • 您是否試過從設備中刪除應用程序並重新安裝? (通過Hector,S3B,Alex O,Joe和Alberto)
  • 您的設備是否越獄?如果是這樣,你需要恢復越獄爲IAP工作。 (通過我的上帝,羅馬和xfze)
  • 您是否從真實的iTunes帳戶註銷?
  • 您是否嘗試過重新啓動設備?
  • 你在設備上嗎? (不會在模擬器工作)

現金去Troy Brant

0

這裏一看,那回答我所有的問題(和框架是使用簡單,太:-):

http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/

但我不得不說,在整個應用程序內購買的是皮塔 - 我的應用程序剛剛發佈了,當然我的下載並檢查了應用內購買屏幕。猜猜看,它完全是空的!

一些研讀之後似乎即使所有被接受並準備出售,在應用程序內購買的產品還需要一段時間才能成爲可在線 - 2小時它終於摸索後...

編輯:

您需要爲您的應用程序創建應用程序內購買,並將其設置爲在iTunes連接中清除銷售。您不需要上傳截圖或者已經審查過,以便能夠以開發模式進行測試。

你是如何命名iTunes連接購買?通常,您應該使用com.companyname.productname.purchasename名稱,並且您從您的應用程序請求的名稱完全一樣。

+0

嗨!謝謝回覆。但請描述你的經歷。你需要什麼產品列表?產品列表意味着應用內購買是由蘋果商店評論組審覈的? – 2012-02-17 15:56:48