2011-04-27 96 views
1

我寫了下面的代碼。在應用程序購買非消費品

但是,當我執行此代碼時,我得到了日誌,顯示「沒有產品可用」。 我無法找到原因。

-(void)viewDidLoad { 

    [super viewDidLoad]; 

if ([SKPaymentQueue canMakePayments]) 
{ 

SKProductsRequest *productsRequest=[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.cmp.name.prdt"]]; 

productsRequest.delegate=self; 
[productsRequest start]; 

} 

else { 
NSLog(@"Parental Control are enabled"); 
} 

} 


-(IBAction)btnpurchase 

{ 

NSString* isPurchased = [[NSUserDefaults standardUserDefaults] stringForKey:@"com.cmp.name.prdt"]; 

if ([@"purchased" compare:isPurchased]==NSOrderedSame) 
{ 

///do some task 

} 

else 
{ 

SKPayment * payment=[SKPayment paymentWithProductIdentifier:@"com.cmp.name.prdt"]; 
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue] addPayment:payment]; 

} 

} 


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

{ 

SKProduct *validProduct=nil; 

int count=[response.products count]; 

if (count>0) { 

validProduct=[response.products objectAtIndex:0]; 

} 

else if(!validProduct) 

{ 

NSLog(@"no products available"); 

} 

} 

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 

for (SKPaymentTransaction *transaaction in transactions) 

{ 

switch (transaaction.transactionState) 

{ 

case SKPaymentTransactionStatePurchasing: 

break; 

case SKPaymentTransactionStatePurchased: 

[[SKPaymentQueue defaultQueue]finishTransaction:transaaction]; 
[[NSUserDefaults standardUserDefaults] setObject:@"purchased" forKey:@"com.cmp.name.prdt"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

break; 

case SKPaymentTransactionStateRestored: 

[[SKPaymentQueue defaultQueue]finishTransaction:transaaction]; 

break; 

case SKPaymentTransactionStateFailed: 

if (transaaction.error.code!=SKErrorPaymentCancelled) { 

NSLog(@"Error encountered"); 

} 

[[SKPaymentQueue defaultQueue] finishTransaction:transaaction]; 

break; 

default: 

break; 

} 

} 

} 

有人能幫我解決嗎?

+1

[response.products計數]返回ZERO,意味着您在產品陣列中獲得零產品信息。 – Jhaliya 2011-04-27 18:37:03

+0

如果您沒有收到任何產品,請確保您已在iOS開發人員中心和iTunes Connect上正確設置了所有內容。同時仔細檢查您是否將正確的產品ID傳遞給產品請求。 – 2011-04-27 19:22:18

回答

0

不幸的是,蘋果公司沒有回覆任何有用的信息,說明爲什麼你的購買沒有出現。我會通過這個checklist。在我的應用程序中,幾天沒有工作,然後突然開始工作。確保您的財務信息是正確的。

+0

好的... 感謝您提供此信息... – 2011-04-28 16:49:32

1

您可以嘗試用下面的代碼段 //產品請求委託方法

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

    NSLog(@"The product request didReceiveResponse :%@",[response description]); 
    NSLog(@"The products are :%@",[response.products description]); 

    NSLog(@"The invalidProductIdentifiers are:%@",[response.invalidProductIdentifiers description]); 

    NSArray *products=response.products; 


    for(SKProduct *currentProduct in products){ 

     NSLog(@"THE Product price is :%@",currentProduct.price); 
     NSLog(@"THE Product description is :%@",currentProduct.localizedDescription); 
     NSLog(@"THE Product title is :%@",currentProduct.localizedTitle); 
     NSLog(@"THE Product's product identifier is :%@",currentProduct.productIdentifier); 

     } 

} 

這將記錄REGISTERED上的iTunes Connect在控制檯窗口產品細節

相關問題