首页 文章

在应用程序购买恢复按钮

提问于
浏览
42

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

我们发现您的应用提供了可以恢复的应用内购买,但它不包含“恢复”功能,以允许用户恢复以前购买的应用内购买 . 要恢复以前购买的应用程序内购买产品,最好提供“恢复”按钮,并在点击“恢复”按钮时启动恢复过程 .

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

[[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];

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

4 回答

  • 41

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

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

  • 3

    我使用了以下变体:

    //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上 .

  • 28

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

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

    我've been rejected for the same reason. It' s由于您可以在不同的ios设备上使用相同的 Apple ID 登录 .

    例如,让's say I' m在iPad上登录 test@iCloud.com . 当我下载你的应用程序时,我意识到我想要删除广告(让's say you have ads on your app if you don' t),所以我删除它们为 99¢ . 一年后,我决定购买iPhone,并在该帐户上登录 test@iCloud.com ,然后我再次下载你的应用程序 . 尽管如此,尽管我已经为它们支付了费用,但广告仍在那里 . 谁愿意两次支付相同的费用?使用 restore 功能,我可以恢复我在 iPad 上进行的购买,并使其在我的 iPhone 上运行 .

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

    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
    

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

相关问题