2013-05-28 41 views
2

有时候,下载失败,我的应用程序在失败时完成交易,正如随处推荐的。但是,如果我完成了交易,则Store Kit无法恢复失败的下载。而且,似乎Store Kit在下载失败后不会自动重试下载内容,而且似乎也无法触发下载。如果Apple托管的应用内购买内容下载失败,该怎么办?

有人想出了在这种情况下做什么?违反所有建议,并且在内容完全下载并安装之前未完成交易?

或者我必须以编程方式恢复事务并忽略所有其他产品标识符?

+0

您是否尝试恢复购买?我希望它能够工作。 – KingofBliss

+0

就像你说的,我现在就这样做。直到下载完成,我才完成交易。此外,在应用程序中,我不会将该产品标记为已购买,直到下载完成并且下载的文件已被复制到文档文件夹中。如果产品看起来像是已经购买的产品,会造成很大的麻烦,但是当您尝试访问其内容时,它并不存在。 – Jonny

回答

1

您可以在您的应用程序通过这种方式添加恢复购买的按钮: -

//inside of an IBaction 
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 


// Then this is called 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
NSLog(@"%@",queue); 
NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); 

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 (@"product id is %@" , productID); 
    // here put an if/then statement to write files based on previously purchased items 
    // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} 
    } 
} 

OR

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

希望这有助于你......!

+0

我的应用程序已经完成了所有这些。但是恢复交易是为了让用户采取行动。例如,在已购买物品的新应用程序之后。我想要自动重新下载失败的下载,直到它们完成。 – openfrog

+0

这个人完全错过了你使用托管内容。我有和你一样的问题。 – Jonny

相关问题