2013-04-26 45 views
4

嘿... StackOverflow的In App Purchase的还原查询

我的iOS应用程序允许购买视频作为非消耗单边行动计划的用户,所有的视频都在大约300MB/650MB的每一个相当沉重的......

Apple要求您使用StoreKit将恢复购买功能实施到您的应用中。这对我来说很好,但是,如果用户购买了一些不同的视频,那么尺寸可能真的开始累加起来....我已经考虑过在这可以完成之前检查用户是否使用wifi,但是说实话,这感觉就像一个解决方法,而不是解决方案。我更愿意获取用户下载的所有内容,并让他/她/现在决定他们要下载的内容。这是允许的,甚至可能的吗?

感谢

奥利

+0

只要你提供恢复选项,您应该通过列出可供重新下载视频是确定供用户选择。如果你想确定它可以,但你需要和苹果公司一起出票。 – Wain 2013-04-27 09:54:00

回答

1

u可以使用SKPaymentQueue的restoreCompletedTransactionsSKPaymentTransaction对象的数组,你可以使用transactionIdentifier跟踪购买交易。

here is the reference

5

是的,他们的要求是,在你的用户界面,你会做出差异之间已经购买和不购买的商品。例如,对于已购买的东西,您可以使用状态,如“再次下载已购买的视频”以及尚未购买的视频“以99美元购买此视频”。

+0

例如,您可以在任何报亭应用中查看此功能 - 您可以选择单独下载您以前购买的哪些报纸/杂志=) – 2013-07-08 09:46:33

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); 
} 
0
You need handle in this method 

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

// Wrote Your code Here 

} 

请参阅apple doc