繁体   English   中英

维护iOS应用内购买记录

[英]Maintaining records of iOS in-app-purchases

我已经实施了IAP,其中有一次购买解锁了应用程序中的某些功能。 由于每个用户只购买一次,我可以询问Apple的IAP服务,如果该用户已购买。 如果是,则解锁该功能。 如果没有,则显示IAP提示。 我可能还在用户默认值中保留了一些“userDidMakePurchase”标志,作为使用没有网络连接的app的不完美解决方案。

现在我想实现一个IAP,用户可以反复进行。 每次向用户提供十个令牌以使用应用内货币。 如何确定特定用户启动应用时的令牌数量?

到目前为止,我已经考虑过在用户默认值中保留令牌计数。 这有一些主要的缺点,如删除和重新安装应用程序消除了用户的令牌余额。 此外,令牌也不会转移到其他设备。

当然,我可以将令牌计数保留在我自己的服务器上或使用AWS。 但是,如果可能的话,我想避免这种情况。 我只熟悉IAP基础知识,所以也许Apple会跟踪所有购买情况,我可以从那里弄清楚。

从“一次购买,永远使用”切换到“多次购买,一次使用”,使您的购买成为Apple的术语中的消费品 由于Apple不会为您存储消耗品购买状态,因此跟踪消耗资源的任务完全取决于您的应用程序。

通常,您可以使用四个地方来存储剩余的计数:

------------------------------------------------------------------
|      Storage     | Offline? | Reinstall? | Encrypted? | Large? |
------------------------------------------------------------------
| Documents Folder |    YES   |     NO     |     NO     |   YES  |
| iCloud           |     NO   |     YES    |     NO     |   YES  |
| User Defaults    |    YES   |     NO     |     NO     |   NO   |
| Keychain         |    YES   |     YES    |     YES    |   NO   |
------------------------------------------------------------------

由于您需要存储少量数据,因此您的理想候选者是Keychain :它可以脱机工作,可以重新安装,并且作为额外的奖励,它也是加密的。

尽管Keychain CF API周围没有内置的NS包装器,但Apple已经为它发布了一个很好的包装器(滚动到页面底部查看代码)。 将安全框架添加到您的解决方案中,将包装器代码复制粘贴到您的项目中(它只有两个文件)。 现在您可以使用钥匙串,就像它是NSDictionary

我有理由相信iCloud键值存储在应用程序删除/重新安装过程中仍然存在。 这可能是要走的路。

否则,你需要自己的服务器来存储令牌数,以及一些验证用户的方法(设备ID不好,如果他们更换设备并从备份恢复怎么办?)和所有随之而来的麻烦 - 注册,忘了密码屏幕等

暂无
暂无

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

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