在App Purchase Restore Query中

时间:2013-04-26 13:17:15

标签: ios objective-c cocoa-touch in-app-purchase storekit

Hey StackOverflow ...

我的iOS应用程序允许用户以非耗材iAP的形式购买视频,所有视频都非常重,每个大约300mb / 650mb ...

Apple要求您使用StoreKit在应用中实施还原购买功能。这对我来说很好,但是,如果用户购买了一些不同的视频,那么尺寸可能真的开始加起来....我已经考虑过检查用户是否在wifi上才能完成,但是说实话,感觉就像一个解决方法而不是解决方案。我宁愿抓住用户下载的所有内容的数组,让/他们/决定他们现在要下载哪些内容。这是允许的,甚至是可能的吗?

由于

奥利

4 个答案:

答案 0 :(得分:5)

是的,他们的要求是,在您的用户界面中,您可以区分已购买的商品和未购买的商品。例如,对于已购买的内容,您可以使用“再次下载已购买的视频”等状态以及尚未购买的视频“以99美元购买此视频”。

答案 1 :(得分:2)

 -(IBAction)goRestore
 {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
 }

//委托方法

  - (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
 {  
    NSLog(@"Access Apple successfully");
    NSMutableArray *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];
        NSLog(@"Lan thu %i tra ve ID = %@",[purchasedItemIDs count],productID);
    }
   //purchasedItemIDs you get all purchase product identifier and compere from your side 
 }


-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error{
NSLog(@"Error when purchasing: %@",error);
 }

答案 2 :(得分:1)

您可以使用SKPaymentQueue的restoreCompletedTransactions,并且可以使用SKPaymentTransactiontransactionIdentifier对象来跟踪所购买的交易。

here is the reference

答案 3 :(得分:0)

You need handle in this method

-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{

// Wrote Your code Here 

}

请参阅apple doc