我正在开发iOS应用,目前我正在努力制定如何管理应用内购买的策略:
Android具有很好的功能,它可以在设备上本地缓存产品所有权信息,因此可以检查所有权,而无需提示用户输入密码。另一方面,iOS无法在不要求用户登录的情况下恢复购买,因此Apple特别不鼓励在Restoring Purchased Products documentation(第一段的最后一句)的app-launch中进行所有权检查。
现在,从技术上讲,你可以让iOS提供相同的"所有权缓存"对于Android所做的非消耗品,只需要从不调用finishTransaction:
,除非交易失败。这样,在每次应用启动时,只要您拨打addTransactionObserver:
,就会获得没有用户登录请求的自有产品列表。
显然,我也可以使用类似NSUserDefaults
之类的东西来提供此缓存,但这样做会更多,只会增加更多机会在实施所有权跟踪时出错。而且由于我需要处理来自事务观察者的随机报告的事务,所以我基本上必须实现上述想法,然后使用NSUserDefaults等再次复制其功能。
因此我的问题:以这种方式(错误地)使用未完成的交易是否可行?他们会自动过期吗?苹果可能拒绝我的应用程序,如果他们发现这是我正在做的事情?这个想法是否有任何负面影响(可靠性,性能,内存/存储浪费)?