2012-04-12 22 views
14

我在恢復已完成的事務時遇到了一些問題。Obj-C,Storekit restoreCompletedTransactions返回零交易?

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

我已在幾個例子中提到的觀察者,我已經嘗試添加paymentQueueRestoreCompletedTransactionsFinished並已具備updatedTransactionspaymentQueueRestoreCompletedTransactionsFinished說我有零交易。

我可以購買產品,如果我再次嘗試購買,它會阻止我並說我已經使用此代碼購買了該產品。

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier]; 
[[SKPaymentQueue defaultQueue] addPayment:payment]; 

我想,也許我與我的包標識的問題,但似乎罰款,如果它是不買又不行。

我一直試圖在設備以及模擬器上,但這有相同的結果。另外,如果我使用的是英國或美國的商店,它並沒有什麼區別。

我真的在抓着吸管找出爲什麼這對我不起作用?

回答

8

試着這樣做,並檢查數組數是否也返回零?

- (void) checkPurchasedItems 
{ 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
}//You Call This Function 

//Then this delegate Function Will be fired 
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    purchasedItemIDs = [[NSMutableArray alloc] init]; 

    NSLog(@"received restored transactions: %i", queue.transactions.count); 
    for (SKPaymentTransaction *transaction in queue.transactions) 
    { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
    } 
} 
+1

是的,我檢查一下,那是什麼給我零 – Jules 2012-04-12 12:07:38

+0

好的,你在哪裏添加trunsactionObserver? – 2012-04-12 12:45:52

+1

在viewdidload中。 – Jules 2012-04-12 12:51:05

1

按照docs

當您創建一個新的產品在您的商店出售,您可以選擇產品是否可以恢復與否。

所以問題是,您的產品配置爲允許恢復?

+1

謝謝,但我不能在任何地方看到,這是一個沒有消耗品? – Jules 2012-04-12 10:34:40

+0

我認爲非消耗品意味着你可以,所以是的。 – Jules 2012-04-12 12:32:02