所以,我有一个刚被Apple拒绝的应用程序,因为没有为用户实现restorePurchases按钮来恢复他们购买的任何非消耗品。
我理解这背后的逻辑,并且错过它(或者至少不了解其实现的阻塞方面)感觉很糟糕,但我有一个不寻常的情况(我不确定是不是很不寻常,但是找不到很多关于它的最佳实践......)
我的应用程序是跨平台的,因此用户可以在Android和iOS上购买相同的项目,并且这些购买需要跨平台持久...因此,在成功进行身份验证后,我会在后端更新一个值两个客户端都具有./ / p>的读写权限
正因为如此,我认为我坚持购买设备和平台就好......但购买的内容与我的应用用户类帐户有关。
现在,如果我按照Apple的要求实施按钮,那么阻止用户将与Apple ID 关联的购买还原到我的应用程序数据库中的其他用户的原因是什么...可能导致可以说是“收入泄漏” - 例如,以朋友用户身份登录,恢复购买,在我的情况下会将购买复制到用户类...然后我有两个只有一个关联的用户收入......
所以...问题:
1)我是否天真地欺骗系统? 2)有没有人有关于如何解决/解决这个问题的最佳实践?
答案 0 :(得分:2)
Apple在In-App Purchase Programming Guide
中解决此问题首先,您可以提供用户的帐户名称和购买信息,以帮助Apple检测不规则活动 -
检测不规则活动
App Store使用不规则活动检测引擎来提供帮助 打击欺诈。某些应用可以提供其他信息以进行改进 引擎检测异常事务的能力。如果您的用户 除了App Store帐户外,还有一个帐户, 在请求付款时提供此额外信息。
然后,在恢复购买时,您可以向restoreCompletedTransactionsWithApplicationUsername:
方法提供相同的用户帐户信息 -
恢复已完成的交易
您的应用通过调用来启动该过程 SKPaymentQueue的restoreCompletedTransactions方法。这发送一个 请求App Store恢复您已完成的所有应用 交易。如果您的应用为applicationUsername设置了值 其支付请求的属性,如检测不规则 Activity,使用restoreCompletedTransactionsWithApplicationUsername: 恢复事务时提供相同信息的方法。
最后,您可以使用服务器上的收据信息将原始事务与同一用户ID的还原事务相关联,如果不匹配则不恢复功能。