0

最近我提交了一个应用内购买的应用,但由于以下原因被拒绝:

我们发现,虽然您的应用提供可恢复的应用内购买,但它不包括允许用户恢复之前购买的应用内购买所需的“恢复”功能

我完全按照说明进行操作,并按以下方式实施:

- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
    [self recordTransaction:transaction];
    [self provideContent:transaction.payment.productIdentifier];
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}

- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
    [self recordTransaction: transaction];
    [self provideContent: transaction.originalTransaction.payment.productIdentifier];
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}

显然,我还没有触发 restoreTransaction 的按钮,但我感到困惑的是,Apple 是否只是要求用户将其作为一种形式来减少混淆?因为上述两种方法都做同样的事情,而且我注意到当我在之前已经这样做之后尝试购买应用内购买时,它会说“免费升级,因为你已经购买了它”。

所以我的第一个问题是,有一个恢复按钮的目的仅仅是为了防止用户吓坏,因为他们可能会害怕再次推动“购买”吗?即我不需要在数据库或其他东西中跟踪我的客户购买历史?

第二个问题是,如果之前没有购买过应用的用户出于好奇推送“恢复”,它会继续为他们购买应用内购买吗?

4

2 回答 2

2

Apple 喜欢你有一个Restore All Purchases-Button 应该发生的是从 Apple 获取购买列表。当用户想要恢复某些东西时,他不应该点击购买(关于购买与否的困惑,就像在 AppStore 的早期一样)

当您触发还原时,它不会购买任何东西。这只是恢复我购买的东西,如果不是,它只是失败但不购买任何东西。

如果您不确定您的应用内购买代码,您可以阅读Raywenderlich.com的应用内购买简介。这篇文章还提供了一个超级可重用的应用内购买帮助代码。当用户点击Restore All Purchases他们的应用内购买助手时调用的方法是- (void)restoreCompletedTransactions;

于 2013-06-12T13:53:14.460 回答
1

第一个问题有点主观,在 SO 上通常不太受欢迎,但无论如何我都会尝试回答。

许多 Apple 人机界面指南侧重于使应用程序的“感觉”与设备相匹配,如指南中所述。虽然其中很多都集中在设备屏幕上运行良好的元素的大小上,但包括恢复按钮也是感觉的一部分。苹果有点武断地决定,如果应用程序提供应用内购买以适应其系统的感觉,则它们需要一个恢复按钮。

第二个问题实际上看起来有点像上一个被混淆地标记为离题的问题。该问题更多地涉及如何设置恢复,但我认为它可能会使您受益并防止您上面的重复代码。 是链接。具体来说,Wrights 接受的答案看起来像是一个很好的模板,可以确保您实际上不会为具有恢复功能的用户购买东西。

如果问题被删除,这里有一个答案建议的教程。

希望能提供一些帮助。

于 2013-06-12T13:41:48.080 回答