我已经首次将应用内购买应用到我的应用更新中,只是等了3周并且由于以下原因而被拒绝:
我们发现您的应用提供了可以恢复的应用内购买 但它不包括允许用户恢复的“恢复”功能 以前购买的应用程序内购买/ s。以前恢复 购买的应用内购买产品,提供适当的 “还原”按钮并在“还原”时启动还原过程 点击按钮。
现在我想在我的桌子右侧(顶部)添加一个navbar
按钮,可以看到/点击应用程序购买并添加以下代码链接到该按钮:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
有人可以验证这是否正确并且很可能只需要所有这些?希望这次成功通过。提前谢谢!
答案 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];
之后,您还需要提供用户购买的内容。