在应用程序购买恢复按钮

时间:2012-06-13 19:24:17

标签: ios in-app-purchase appstore-approval

我已经首次将应用内购买应用到我的应用更新中,只是等了3周并且由于以下原因而被拒绝:

  

我们发现您的应用提供了可以恢复的应用内购买   但它不包括允许用户恢复的“恢复”功能   以前购买的应用程序内购买/ s。以前恢复   购买的应用内购买产品,提供适当的   “还原”按钮并在“还原”时启动还原过程   点击按钮。

现在我想在我的桌子右侧(顶部)添加一个navbar按钮,可以看到/点击应用程序购买并添加以下代码链接到该按钮:

 [[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];

有人可以验证这是否正确并且很可能只需要所有这些?希望这次成功通过。提前谢谢!

4 个答案:

答案 0 :(得分:41)

我使用了以下的变体:

//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}
    }  
}

抱歉,如果没有意义,我就在iPad上。

答案 1 :(得分:28)

亚历克斯,我上周因为同样的原因被拒绝了,这正是苹果想要的 - 在添加了这样一个恢复按钮后,他们没有就此问题提出任何其他问题。

当然,您不仅需要调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];,还需要实现自身恢复(我的意思是,向用户提供内容)。

答案 2 :(得分:3)

还原按钮的替代方法可能是app settings bundle中的还原开关。它并没有压倒UI,似乎Apple欢迎它(但一定要提到你已经用这种方式实现了机制)。

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"];

答案 3 :(得分:3)

我因同样的原因被拒绝了。这是因为您可以在不同的ios设备上使用相同的Apple ID登录。

例如,假设我已在iPad上登录test@iCloud.com。当我下载你的应用程序时,我意识到我想删除这些广告(假设你没有在你的应用上播放广告),所以我删除它们99¢。一年后,我决定购买iPhone,并在该帐户上登录test@iCloud.com,然后再次下载您的应用。尽管如此,尽管我已经为它们支付了费用,但广告仍在那里。谁愿意两次支付相同的费用?借助restore功能,我可以恢复我在iPad上进行的购买,并使其在iPhone上运行。

要恢复购买,您可以使用:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

之后,您还需要提供用户购买的内容。