10

我们是三个人,他们为 iPhone 制作了一款免费游戏,该游戏已经在 App Store 上架了将近一年。

该应用程序是一款棋盘游戏,您可以在其中创建用户或使用您的 Facebook 凭据登录。您可以退出游戏并使用其他帐户重新登录。

现在我们已经更新了应用程序,能够将用户升级为高级用户。允许个人和全球游戏统计。

但苹果在审批过程中让我们头疼,拒绝接受我们的应用内购买。首先他们不会批准它,因为它没有恢复按钮。然后当我们告诉他们不需要恢复按钮时,因为它是消耗品购买,他们现在要求我们将其更改为非消耗品并添加恢复按钮。

如果购买是非消耗品,请考虑这种情况。

  1. 用户登录。
  2. 用户将帐户升级到高级
  3. 用户注销。
  4. 用户使用不同的帐户登录。
  5. 用户恢复之前的购买。

这将允许您将两个帐户升级为高级帐户,但只需购买一次。

Apple 的论点是,如果设置了新设备或恢复了设备,我们的用户需要能够恢复购买。

但这不是它的工作方式。用户将其帐户升级为高级帐户。现在,当他们购买新设备或恢复现有设备时,他们只需使用现有游戏帐户登录,即可升级,因为我们在服务器端已将帐户标记为高级帐户。

所以我的问题基本上是。当我们选择使用消耗品而不是非消耗品时,我们是否完全错了。如果是这样,应该如何实施非消耗品以便(可能)在同一设备上使用不同的游戏帐户多次购买?

其次,如果我们对消耗品应用内购买的使用是正确的,我们应该说什么来说服苹果,我们走在正确的道路上?

4

2 回答 2

6

如果您的高级帐户是您的用户只需购买一次的东西,那么 Apple 绝对正确地要求您切换到非消耗性应用内。

您描述的场景很有可能(我也不得不面对它),但是如果您在解锁高级功能(保存与用户关联的所有交易)之前添加应用内收据的服务器端验证,您就有机会验证购买是新的或恢复的,检查字段original_transaction_idoriginal_purchase_date收据数据。通过这种方式,您可以查看恢复购买的用户是否与最初购买的用户相同(可能检查其 facebook 用户 ID)。

无论如何,经验告诉我发生这种情况的可能性并不高,我不建议实施此检查(尽管服务器端验证几乎总是必须的;-))

于 2013-04-20T08:58:12.597 回答
2

根据应用内购买编程指南的“恢复交易”部分:

如果您的应用程序支持必须可恢复的产品类型,则您必须包含一个允许用户恢复这些购买的界面。

如果您的应用包含非消耗性购买,并且如果您不包含恢复按钮,Apple 将不会批准您的应用。

在 2012 年 6 月之后,Apple 已要求这样做。

所以回答你的问题:不,看来你必须使用restoreCompletedTransactions.

希望它可以帮助你。

于 2013-04-20T08:54:13.863 回答