在应用程序购买恢复button
我已经在应用程序购买第一次实施了我的应用程序更新,也只是等待3个星期,并由于以下原因拒绝:
我们发现您的应用提供了可以恢复的应用内购买,但不包含“还原”function,以允许用户恢复以前购买的应用内购买。 要恢复以前购买的应用程序内购买产品,提供“恢复”button并在点击“恢复”button时启动恢复过程将是适当的。
现在我正在考虑在桌面的右侧(顶部)添加一个navbar
button,在那里应用程序的购买可以被看到/点击,并添加下面的代码来链接到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我已经为此付出了代价,但广告仍然存在。 谁愿意支付同样的事情两次? 借助restore
function,我可以恢复在iPad
上进行的购买,并使其在iPhone
。
要恢复购买,您可以使用:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
之后,您还需要提供用户购买的内容。