在应用程序购买恢复button

我已经在应用程序购买第一次实施了我的应用程序更新,也只是等待3个星期,并由于以下原因拒绝:

我们发现您的应用提供了可以恢复的应用内购买,但不包含“还原”function,以允许用户恢复以前购买的应用内购买。 要恢复以前购买的应用程序内购买产品,提供“恢复”button并在点击“恢复”button时启动恢复过程将是适当的。

现在我正在考虑在桌面的右侧(顶部)添加一个navbarbutton,在那里应用程序的购买可以被看到/点击,并添加下面的代码来链接到button:

  [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

有人可以证实这是正确的,最有可能的是所有需要的? 这次想成功通过。 提前致谢!

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

当然,你不仅需要调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; ,但也实施恢复自己(我的意思是,提供内容给用户)。

我使用这个变化:

 //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上,如果这没有意义。

还原button的替代方法可能是应用程序设置包中的还原开关。 它并没有压倒用户界面,似乎苹果欢迎它(但一定要提到,你已经实施了这种方式的机制)。

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

我因为同样的原因被拒绝了。 这是因为您可以在不同的iOS设备上使用相同的Apple ID进行login。

例如,假设我在iPad上login了test@iCloud.com 。 当我下载你的应用程序时,我意识到我想删除广告(假设你的应用程序没有广告),所以我将它们删除了99¢ 。 一年后,我决定购买一个iPhone,并login到该帐户test@iCloud.com ,我再次下载你的应用程序。 尽pipe我已经为此付出了代价,但广告仍然存在。 谁愿意支付同样的事情两次? 借助restorefunction,我可以恢复在iPad上进行的购买,并使其在iPhone

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

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

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