繁体   English   中英

iOS中的耗材与非耗材

[英]Consumable vs. non-consumable in iOS

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

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

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

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

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

  1. 用户登录。
  2. 用户升级帐户为premium
  3. 用户注销。
  4. 用户使用其他帐户登录。
  5. 用户恢复以前的购买。

这样您就可以将两个帐户升级为高级帐户,但只需一次购买即可。

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

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

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

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

如果您的高级帐户是您的用户必须只购买一次,那么Apple肯定会要求您切换到非消费类应用程序。

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

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

根据应用程序内购买编程指南的“恢复事务”部分

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

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

这是2012年6月之后苹果所必需的。

所以回答你的问题:不,似乎你必须使用restoreCompletedTransactions

希望它能帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM