我们是三个人,为iPhone制作了free game,已经在App Store上推出了近一年。
该应用程序是一款棋盘游戏,您可以使用Facebook凭据创建用户或登录。您可以退出游戏并使用其他帐户重新登录。
现在我们已经更新了应用程序,可以将用户升级为高级用户。允许个人和全球游戏统计。
但Apple在审批过程中让我们头疼,并拒绝接受我们的应用程序内购买。首先,他们不会批准它,因为它没有恢复按钮。然后,当我们告诉他们时,不需要恢复按钮,因为它是消耗品购买,他们现在要求我们将其更改为非消耗品并添加恢复按钮。
如果购买是非消费品,请考虑这种情况。
这样您就可以将两个帐户升级为高级帐户,但只需购买一次。
Apple认为,如果设置了新设备或设备已恢复,我们的用户需要能够恢复购买。
但这不是它的工作方式。用户将其帐户升级为高级帐户。现在,当他们购买新设备或恢复现有设备时,他们只需使用现有游戏帐户登录,升级将可用,因为我们在服务器端已将该帐户标记为高级帐户。
所以我的问题基本上就是。当我们选择使用消耗品而不是非消耗品时,我们完全错了。如果是这样,为了(可能)在同一台设备上使用不同的游戏帐户多次购买非耗材,应如何实施?
其次,如果我们对消费类应用程序内购买的使用是正确的,那么我们应该说服苹果,我们走在正确的道路上呢?
答案 0 :(得分:4)
如果您的高级帐户是您的用户必须只购买一次,那么Apple绝对有权要求您切换到非消费类应用程序。
您描述的场景非常有可能(我也必须面对它)但是如果您在解锁高级功能(保存与用户关联的所有交易)之前添加应用内收据的服务器端验证,您有机会验证购买是新的还是已恢复,检查收据数据中的字段original_transaction_id
和original_purchase_date
。通过这种方式,您可以查看恢复购买的用户是否与最初购买的用户相同(可能会检查其Facebook用户ID)。
无论如何,经验告诉我发生这种情况的可能性并不高,我不建议实施这项检查(尽管服务器端验证几乎总是必须的;-))
答案 1 :(得分:2)
根据In-App Purchase Programming Guide:
的“恢复交易”部分如果您的应用程序支持必须可恢复的产品类型,则必须包含允许用户恢复这些购买的界面。
如果您的应用包含非消耗品购买,并且如果您不包含恢复按钮,那么Apple将不会批准您的应用。
2012年6月之后,苹果已经将此作为必要。
所以回答你的问题:不,似乎你必须使用restoreCompletedTransactions
。
希望它对你有所帮助。