我正在为我的iOS应用程序购买应用程序。苹果拒绝了我的二进制文件,因为我没有恢复购买的产品。在我的应用程序中,一旦用户点击产品的图标,如果商品被锁定,他/她将进入inApp购买流程,否则产品将打开。没有可视化的Buy按钮。现在苹果又说要提供恢复按钮了?有人能告诉我怎么处理这个问题吗?我试过了
- (void) checkPurchasedItems
{
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}// Call This Function
//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
alreadyPurchasedItems = [[NSMutableArray alloc] init];
NSLog(@"received restored transactions: %i", queue.transactions.count);
for (SKPaymentTransaction *transaction in queue.transactions)
{
NSString *ID = transaction.payment.productIdentifier;
[alreadyPurchasedItems addObject:ID];
}
}在应用程序启动时,但从不调用方法,因此我可以获得已购买商品的列表,然后直接通知用户他/她是否已经购买了这些商品。
发布于 2013-04-15 00:02:53
如何设置[SKPaymentQueue defaultQueue]的委托?我猜你已经做过smt了,比如:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];在那之后,[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];应该导致下面的方法被激发。所以case SKPaymentTransactionStateRestored就是你实现它的地方:
-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction * transaction in transactions) {
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
...
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
...
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
...
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
default:
break;
}
};
}你可能会看一下本教程,恢复在最后会有更详细的解释。http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial
https://stackoverflow.com/questions/16000999
复制相似问题