2012-04-12 23 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