应用内购买恢复查询

4

嘿,StackOverflow...

我的iOS应用程序允许用户购买视频作为非消耗性iAPs,每个视频的大小都在300mb / 650mb左右......

苹果要求您使用StoreKit将恢复购买功能实现到您的应用程序中。这对我来说一切都很好,但是,如果用户购买了几个不同的视频,则其大小可能会真正开始累积....我考虑过在此操作之前检查用户是否连接wifi,但老实说,它感觉像是一种解决方法而不是解决方案。我更想获取用户已下载内容的数组,并让/他们/决定现在下载哪一个。这样做是允许的,还是可能的吗?

谢谢

Ollie


只要您提供恢复选项,列出可供用户重新下载的视频,那么您就可以了。但如果您想确保一切都没问题,您需要向苹果提交一个工单。 - Wain
4个回答

5
是的,他们的要求是在您的用户界面中区分已购买和未购买的商品。例如,对于已购买的物品,您可以使用“重新下载已购买的视频”这样的状态,而对于尚未购买的视频,则使用“以99美元购买此视频”。

你可以在任何一款杂志应用中看到这个功能的实现,例如 Newsstand 应用程序 - 你可以选择之前购买的报纸/杂志中的任意一个进行单独下载 =) - Simon Withington

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);
 }

1
您可以使用SKPaymentQueue的restoreCompletedTransactions方法,并从SKPaymentTransaction对象数组中使用transactionIdentifier来跟踪购买的交易。

这里是参考资料


0
You need handle in this method

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

// Wrote Your code Here 

}

请参考苹果文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接